Zobrazí chybová zpráva "System Error & H80004005" z aplikace Visual Basic 6.0 při MFC ActiveX ovládacího prvku podtříd libovolné třídy okna implementována pomocí Comctl32.dll

Překlady článku Překlady článku
ID článku: 223152 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Příznaky

MFC ActiveX řídit podtříd, že žádné třídy okna implementován Comctl32.dll příčiny následující chyba vyvolána z exe Visual Basic 6.0.
"Systém chyba & H80004005 (-2147467259). Nespecifikovaná chyba „
Ladicí verzi ovládacího prvku ActiveX způsobí požadavek v souboru Ctlcore.cpp na konci COleControl::CreateControlWindow, nebo poblíž řádku 662.

K tomuto problému dochází pouze při sestavování exe ze Visual Basic 6.0 a spusťte jej z mimo vývojovém prostředí jazyka.

Příčina

Spustitelné soubory jazyka Microsoft není inicializovat knihovnu běžných ovládacího prvku (Comctl32.dll) ve výchozím nastavení výsledné CreateEx volání nedaří COleControl::CreateControlWindow. Volání GetLastError() poskytuje 0x0000057F - nelze nalézt třídu okna, která označuje běžné ovládací prvek knihovny potřebuje explicitně inicializován.

Řešení

Uvnitř InitInstance ovládací prvek ActiveX, provádět volání:
InitCommonControls(void)
nebo
InitCommonControlsEx(LPINITCOMMONCONTROLSEX lpInitCtrls)
to zajišťuje, že Comctl32.dll načten a inicializován bez ohledu na ovládací prvek je spuštěn v kontejneru.

Namísto volání InitCommonControls z ovládacího prvku kódu můžete jej také volat přímo z aplikace klienta jazyka:
  • Proveďte obecné deklarace odpovídající tvar; například:
    Private Declare Sub InitCommonControls Lib "comctl32.dll" ()
  • Přidat volání:
    InitCommonControls
    					
    v metodě Form_Load.
V některých situacích může to být příliš pozdě inicializovat knihovnu běžných ovládacích prvků. Proto je vhodné přidat toto volání InitInstance ovládacího prvku.

Prohlášení

Toto chování je záměrné.

Další informace

Kroky pro reprodukci chování

  1. Visual C++, Průvodce ovládacím prvkem MFC ActiveX pomocí vytvořit výchozí ovládací prvek ActiveX.
  2. V části Nastavení řízení v na podtřídu třídy okna AppWizard (krok 2 z Visual C++ 6.0 AppWizard), zvolte jednu z následujících: msctls_hotkey32 msctls_progress32 SysTabControl32 msctls_statusbar32 SysListView32 msctls_trackbar32 SysHeader32 msctls_updown32 SysAnimate32, nebo SysTreeView32.
  3. Vytvořit ovládací prvek.
  4. Otevřete Microsoft Visual Basic 6.0 a vytvoření nového projektu standardní Exe.
  5. V nabídce projekt klepněte na tlačítko součásti a vyberte ovládací prvek, který jste právě vytvořili pomocí Microsoft Visual C++.
  6. Vyberte tento ovládací prvek a kreslení, které v Form okno.
  7. Z nabídky soubor klepněte na tlačítko Vytvořit Project.exe a sestavení exe.
  8. Přejděte do Průzkumníka a spusťte tomto spustitelné.

Vlastnosti

ID článku: 223152 - Poslední aktualizace: 21. listopadu 2006 - Revize: 3.1
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Foundation Class Library 4.2 na těchto platformách
    • Microsoft Visual C++ 5.0 Standard Edition
    • Microsoft Visual C++ 6.0 Service Pack 5
    • Microsoft Visual Basic 5.0 Learning Edition
    • Microsoft Visual Basic 6.0 Learning Edition
    • Microsoft Visual Basic 5.0 Professional Edition
    • Microsoft Visual Basic 6.0 Professional Edition
    • Microsoft Visual Basic 5.0 Enterprise Edition
    • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Klíčová slova: 
kbmt kberrmsg kbtshoot kbcmnctrls kbctrl kbprb KB223152 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:223152

Dejte nám zpětnou vazbu

 

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