CORRECTIF : Un dépassement de capacité de la pile se produit lorsque les conteneurs de contrôles MFC ActiveX entrer dans un état de la récursivité infinie dans Visual C++

Traductions disponibles Traductions disponibles
Numéro d'article: 192942 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Symptômes

Dans certaines circonstances, conteneurs de contrôles MFC ActiveX va entrer dans un état d'une récurrence infinie finalement conduit à un dépassement de capacité de la pile. Les symptômes lorsque la position d'un site de contrôle change, le programme apparemment se bloquer et finit par générer un dépassement de capacité de la pile (0xC00000FD) exception système d'exploitation. La trace de pile ressemble à ceci :
   COleControlSite::MoveWindow
   COleControl::XOleInPlaceObject::SetObjectRects
   COleControl::OnSetObjectRects
   COleControlSite::MoveWindow
   ...
				

Cause

Lorsque la position du contrôle de site change, le code conteneur modifie la position de la fenêtre réflecteur (le cas échéant) et les rectangles du dispositif de suivi (le cas échéant). Le code de contrôle de conteneur appelle finalement COleControl::XOleInPlaceObject::SetObjectRects. (Voir la section CTLINPLC.CPP dans la source MFC). SetObjectRects() effectue un appel à GetOuterWindow(), renvoie la fenêtre réflecteur si elle existe. Si la variable de fenêtre réflecteur est NULL puis la même fenêtre objet est retourné, MoveWindow est ensuite appelée à l'aide de l'objet de fenêtre renvoyée. Ainsi, MoveWindow à appeler sur lui-même, ce qui entraîne une boucle récursive.

Résolution

Une solution de contournement consiste à copier la version de Visual C++ 5.0 de la Mfc42.dll (version du fichier : 4.21.7303) vers le répertoire de base du programme rencontre ce problème. Cela entraînera le programme doit utiliser l'ancienne version de MFC, au lieu de Mfc42.dll qui se trouve dans le répertoire système de Windows.

Statut

Microsoft a confirmé l'existence de ce bogue dans le Microsoft produits répertoriés dans cet article. Ce bogue a été corrigé dans Visual Studio 6.0 Service Pack 1.

Pour obtenir ce service pack, reportez-vous au site Web de Microsoft à l'adresse suivante :
http://msdn2.microsoft.com/en-us/vstudio/Aa718362.aspx
Pour plus d'informations sur Visual Studio 6.0 Service Pack 1, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la base de connaissances Microsoft :
193009Lisezmoi de Visual Studio 6.0 Service Pack 1
194022Visual Studio 6.0 service packs, quoi, où, pourquoi
194295Comment faire pour savoir qu'un service pack Visual Studio est installé

Plus d'informations

Ce bogue a été trouvé dans WordPerfect 8 est livré avec de Corel Office Suite 8. Ce bogue se produit uniquement avec la version de Visual C++ 6.0 de la Mfc42.dll.

Propriétés

Numéro d'article: 192942 - Dernière mise à jour: samedi 22 février 2014 - Version: 5.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Foundation Class Library 4.2 sur le système suivant
    • Microsoft Visual C++ 6.0 Édition Entreprise
    • Microsoft Visual C++ 6.0 Édition Professionnelle
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
Mots-clés : 
kbnosurvey kbarchive kbmt kbqfe kbbug kbfix kbnoupdate kbvc600sp1fix kbvs600sp1fix KB192942 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 192942
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com