Punkty wejścia w eksportowanych funkcji DLL
Eksportowanych funkcji biblioteki DLL, użyj AFX_MANAGE_STATE makro w celu utrzymania właściwego stanu globalnego podczas przełączania z modułu DLL do biblioteki DLL aplikacji wywołującej.
Po nazwie, to makro ustawia pModuleState, wskaźnik do AFX_MODULE_STATE struktury zawierającej globalne dane dla modułu, jako Państwo skuteczne moduł zawierający zakres funkcji na pozostałą.Poprzedni stan modułu skuteczne opuszczających zakres zawierający makro, automatycznie zostanie przywrócona.
To przełączanie jest osiągnąć tworząc instancję AFX_MODULE_STATE klasy na stosie.W jego konstruktora tej klasy otrzymuje wskaźnik na bieżący stan modułu i zapisuje ją w zmiennej Członkowskich, a następnie ustawia pModuleState jako nowy stan modułu skuteczne.W jego destruktora tej klasy przywraca wskaźnik przechowywane w jego zmienną jako stan modułu skuteczne.
Masz wyeksportowanej funkcji, który uruchamia okno dialogowe w bibliotece DLL, należy dodać następujący kod do początku funkcji:
AFX_MANAGE_STATE(AfxGetStaticModuleState( ))
To zamienia bieżący stan modułu z Państwem zwrócony z AfxGetStaticModuleState do końca bieżącego zakresu.
Jeśli będzie wystąpić problemy z biblioteki DLL zasobów AFX_MANAGE_STATE makro nie jest używany.Domyślnie MFC używa dojścia do zasobu aplikacji głównej załadować szablonu zasobu.Ten szablon jest faktycznie przechowywane w bibliotece DLL.Głównym powodem jest informacji o stanie modułu MFC firmy nie został przełączony przez AFX_MANAGE_STATE makro.Dojścia do zasobu jest odbierana od stanu modułu MFC firmy.Nie przełączenie stanu modułu powoduje dojścia do zasobu niewłaściwy ma być używany.
AFX_MANAGE_STATEnie trzeba być wprowadzone do każdej funkcji w bibliotece DLL.Na przykład InitInstance może być wywoływana przez kod MFC w aplikacji bez AFX_MANAGE_STATE ponieważ MFC jest automatycznie przenoszony stanu modułu przed InitInstance , a następnie przełącza go ponownie po InitInstance zwraca.To samo dotyczy wszystkich programów obsługi wiadomości mapę.Regularne dll faktycznie mają procedury specjalne okno, która automatycznie przełącza stan modułu przed przesłaniem wiadomości.