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

Překlady článku Překlady článku
ID článku: 192942 - Produkty, které se vztahují k tomuto článku.
Tento článek byl archivován. Je nabízen v takovém stavu, v jakém je, a nebude již nadále aktualizován.
Rozbalit všechny záložky | Minimalizovat všechny záložky

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:
http://msdn2.microsoft.com/en-us/vstudio/Aa718362.aspx
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.

Vlastnosti

ID článku: 192942 - Poslední aktualizace: 28. února 2014 - Revize: 5.2
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Foundation Class Library 4.2 na těchto platformách
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
Klíčová slova: 
kbnosurvey kbarchive kbmt kbqfe kbbug kbfix kbnoupdate kbvc600sp1fix kbvs600sp1fix KB192942 KbMtcs
Strojově přeložený článek
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.
Projděte si také anglickou verzi článku:192942

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