Struktura AFX_EXTENSION_MODULE

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

Index