Sdílet prostřednictvím


Exportované knihovny DLL funkce vstupních bodů

Exportované funkce knihovny DLL, použít AFX_MANAGE_STATE makro udržování správné globální stavu při přepnutí z modulu DLL knihovnu DLL volající aplikaci.

Při tomto makro nastaví pModuleState, ukazatel na AFX_MODULE_STATE struktury globální data pro modul, obsahující jako účinné modul stát na zbývající rozsah obsahující funkci.Opouštějících rozsah obsahující makra automaticky obnoven předchozí stav modulu účinné.

Toto přepínání je dosaženo vytvořením instance AFX_MODULE_STATE třídy v zásobníku.V jeho konstruktoru třídy získá ukazatel na aktuální stav modulu a uloží členské proměnné a poté nastaví pModuleState jako nový modul efektivní stát.V jeho destruktoru třídy obnoví uložené v jeho členské proměnné jako stav modulu efektivní ukazatel.

Pokud máte exportovaná funkce, například otevře dialogové okno v knihovny DLL potřebujete následující kód přidejte na začátek funkce:

AFX_MANAGE_STATE(AfxGetStaticModuleState( ))

To Zamění aktuální stav modulu stát vrátil z AfxGetStaticModuleState do konce aktuálního oboru.

Pokud dojde k potížím s prostředky v knihovnách DLL AFX_MANAGE_STATE makro není používán.Ve výchozím nastavení používá MFC načtení prostředku šablony popisovače prostředku hlavní aplikace.Tato šablona skutečně uloženy v knihovně DLL.Hlavní příčina je že MFC a informace o modulu není bylo změněno tak, AFX_MANAGE_STATE makro.Popisovače prostředku je obnovit z modulu státu a MFC.Chybný prostředek úchytu použít není přepnutí stav modulu způsobí.

AFX_MANAGE_STATEnení nutné do každé funkce v knihovně DLL.Například InitInstance lze volat pomocí MFC kódu v aplikaci bez AFX_MANAGE_STATE protože MFC automaticky přesune modul stavu před InitInstance a potom přepínače je zpět po InitInstance vrátí.Totéž platí pro všechny obslužné rutiny zpráv mapy.Pravidelné knihovny DLL mají skutečně zvláštní hlavní okno postup, který před směrováním zprávy automaticky přepne stav modulu.

Viz také

Koncepty

Správa stavu dat MFC modulů