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++

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.

192942
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
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 : 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.

Avertissement : Cet article a été traduit de manière automatique

Propriétés

ID d'article : 192942 - Dernière mise à jour : 02/22/2014 17:41:45 - Révision : 5.2

  • Microsoft Foundation Class Library 4.2
  • kbnosurvey kbarchive kbmt kbqfe kbbug kbfix kbnoupdate kbvc600sp1fix kbvs600sp1fix KB192942 KbMtfr
Commentaires