Oprava: Při kontejnery ovládacího prvku MFC ActiveX zadejte v jazyce C++ stavu nekonečnou rekurzi dochází přetečení zásobníku

Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.

192942
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Příznaky
Za určitých okolností zadá kontejnery ovládacího prvku MFC ActiveX stavu nekonečnou rekurzi nakonec vede k přetečení zásobníku. Příznaky tohoto jsou při změně pozice řízení webu, bude program zdánlivě přestat reagovat a nakonec vyrobit přetečení zásobníku (0xC00000FD) výjimka operačního systému. Trasování zásobníku vypadá takto:
   COleControlSite::MoveWindow   COleControl::XOleInPlaceObject::SetObjectRects   COleControl::OnSetObjectRects   COleControlSite::MoveWindow   ...				
Příčina
Při změně pozice řízení webu změní kód kontejner pozice okna odrážeč (pokud existuje) a obdélníky sledování (pokud existuje). Ovládací prvek kontejner kód nakonec volá COleControl::XOleInPlaceObject::SetObjectRects. (Viz CTLINPLC.CPP zdroj MFC.) SetObjectRects() zavolá GetOuterWindow(), která vrací odrážeč okno, pokud existuje. Pokud je proměnná okno odrážeč NULL potom stejný objekt okno je vrácena, MoveWindow se pak nazývá pomocí objektu vráceného okna. To způsobí MoveWindow být volán na sebe, výsledkem rekurzivní smyčky.
Řešení
Jeden řešením je kopírování Visual C++ 5.0 verze MFC42.DLL (verze souboru: 4.21.7303) domovského adresáře programu dochází k tomuto problému. Způsobí program použít starší verzi MFC, namísto MFC42.DLL je umístěn v adresáři systému Windows.
Prohlášení
Společnost Microsoft potvrzuje, že se jedná být chybou v Microsoft produkty uvedené v tomto článku. Tuto chybu byl vyřešen v Visual Studio 6.0 Service Pack 1.

Chcete-li získat tuto aktualizaci service pack, naleznete na následujícím webu: Další informace o Visual Studio 6.0 Service Pack 1 v následujícím článku znalostní následujících článcích databáze Microsoft Knowledge Base:
193009Visual Studio 6.0 Service Pack 1 Readme
194022Visual Studio 6.0 služby balíky co, kde, proč
194295Jak zjistit, že je nainstalována aktualizace service pack Visual Studio
Další informace
Tuto chybu byl nalezen v 8 WordPerfect dodává jako součást sady Office Corel 8. Této chybě dochází pouze u verze Visual C++ 6.0 MFC42.DLL.

Upozornění: Tento článek byl přeložen automaticky

Vlastnosti

ID článku: 192942 - Poslední kontrola: 02/28/2014 16:51:26 - Revize: 5.2

  • Microsoft Foundation Class Library 4.2
  • kbnosurvey kbarchive kbmt kbqfe kbbug kbfix kbnoupdate kbvc600sp1fix kbvs600sp1fix KB192942 KbMtcs
Váš názor