Struktura AFX_EXTENSION_MODULE ma następującą postać:
struct AFX_EXTE&NSION_MODULE
{
nbsp; BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass * pFirstSharedClass;
COleObjectFactory * pFirstSharedFactory;
}
AFX_EXTENSION_MODULE jest używany podczas inicjowania MFC bibliotek DLL rozszerzeń do przechowywania stanu modułu DLL rozszerzenia.
Członkowie
bInitialized
Prawda , jeśli moduł DLL została zainicjowana z AfxInitExtensionModule.
hModule
Określa dojścia modułu DLL.
hResource
Określa dojścia modułu niestandardowe zasobu DLL.
pFirstSharedClass
Wskaźnik (struktura CRuntimeClass ) informacje modułu DLL pierwsza klasa runtime. W celu rozpoczęcia na liście klasy runtime.
pFirstSharedFactory
Wskaźnik do modułu DLL pierwszego obiektu fabryki (obiektu COleObjectFactory ). W celu rozpoczęcia na liście fabryki klas.
Komentarze
MFC DLL rozszerzenia trzeba zrobić dwie rzeczy w ich funkcji DllMain:
Struktura AFX_EXTENSION_MODULE jest używany do przechowywania kopii rozszerzenie DLL modułu Państwa, łącznie z kopii obiektów klasy runtime, które zostały zainicjowane przez bibliotekę DLL rozszerzenia jako część normalnego obiektu statycznego budowy wykonywane przed wejściem DllMain . Na przykład:
statyczne AFX_EXTE&NSION_MODULE extensionDLL;
extern "C" int APIENTRY
DllMain (wystąpienie HINSTANCE wystąpienie hInstance, DWORD dwReason, elementem LPVOID)
{
nbsp; / / Inicjuj moduł rozszerzenie tej biblioteki DLL
Sprawdź (AfxInitExtensionModule (extensionDLL, wystąpienie hInstance))
Moduł zapisane w strukturze AFX_EXTENSION_MODULE mogą być kopiowane do obiektu CDynLinkLibrary . Na przykład:
/ / CDynLinkLibrary klasy
IMPLEMENT_DYN&AMIC (CDynLinkLibrary, CCmdTarget)
/ / Konstruktora
CDynLinkLibrary::CDynLinkLibrary (AFX_EXTENSION_MODULEamp, stan, BOOL bSystem)
{
#ifndef _AFX_NO_OLE_SUPPORT
m_factoryList.construct (offsetof (COleObjectFactory, m_pNextFactory));
#ENDIF
m_classList.construct (offsetof (CRuntimeClass, m_pNextClass));
/ / skopiować o użytkowniku AFX_EXTENSION_MODULE struct
ASSERT (state.hModule! = NULL);
m_hModule = state.hModule;
m_hResource = state.hResource;
m_classList.m_pHead = state.pFirstSharedClass;
#ifndef _AFX_NO_OLE_SUPPORT
m_factoryList.m_pHead = state.pFirstSharedFactory;
#ENDIF
m_bSystem = bSystem
Zobacz też AfxInitExtensionModule, AfxTermExtensionModule