Vstupní body exportované funkce DLL
Exportované funkce z knihovny DLL pomocí AFX_MANAGE_STATE makro k udržení správné globálního stavu při přepnutí z modulu DLL knihovnu DLL volání aplikace.
Při volání, je toto makro nastaví pModuleState, ukazatel AFX_MODULE_STATE struktura obsahující globální data pro modul, jako stát efektivní modul pro zbytek obsahující obor funkce.Při výstupu rozsah obsahující makro, předchozí stav účinné modul automaticky obnoven.
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éto třídy získá ukazatel na aktuální stav modulu a uloží jej v členské proměnné a potom nastaví pModuleState jako nový modul efektivní stát.Tato třída v jeho destruktor obnoví ukazatel uložené v jeho členskou proměnnou jako stát efektivní modul.
Používáte-li exportovanou funkci, například takové, které spustí dialogové okno v 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 s stav vrácený z AfxGetStaticModuleState až do konce aktuálního oboru.
Problémy se zdroji v DLL dojde-li AFX_MANAGE_STATE makro není použit.Knihovna MFC používá ve výchozím nastavení popisovač prostředku hlavní aplikace načíst šablonu zdroje.Tato šablona je skutečně uloženy v knihovně DLL.Hlavní příčina je, že informace o stavu modulu knihovny MFC nebyl přepínány AFX_MANAGE_STATE makra.Popisovač prostředku je obnovit ze stavu modulu knihovny MFC.Není přepnutí stavu modulu způsobí nesprávné zdroje popisovač má být použit.
AFX_MANAGE_STATEnení nutné uvést do každé funkce v knihovně DLL.Například InitInstance může být volána kód knihovny MFC do aplikace bez AFX_MANAGE_STATE vzhledem k tomu, že knihovna MFC automaticky přepne stav modulu před InitInstance a pak ji zpět po InitInstance vrátí.Totéž platí pro všechny mapy zprávu obslužné rutiny.Běžné knihovny DLL mají skutečně zvláštní hlavní okno postup, který automaticky přepne stav modulu před směrováním zprávy.