AFX_EXTENSION_MODULE構造は次の形式をが:
構造体 AFX_EXTENSION_MODULE{特価;BOOL bInitialized;HMODULE hModule;HMODULE hResource;CRuntimeClass ※ pFirstSharedClass;COleObjectFactory ※ pFirstSharedFactory;}(&N)
AFX_EXTENSION_MODULE MFC 拡張 Dll の初期化中に、拡張 DLL モジュールの状態を保持するために使用されます。
メンバー
bInitialized
DLL モジュールAfxInitExtensionModuleで初期化されている場合に真。
hModule
DLL モジュールのハンドルを指定します。
hResource
DLL カスタム リソース モジュールのハンドルを指定します。
pFirstSharedClass
DLL モジュールの最初のランタイム クラス ( CRuntimeClass構造) 情報へのポインター。ランタイム クラス リストの開始を提供するために使用。
pFirstSharedFactory
DLL モジュールの最初のオブジェクト ファクトリ ( COleObjectFactoryオブジェクト) へのポインター。クラス ファクトリのリストの先頭を提供するために使用。
コメント
MFC 拡張 Dll のDllMain関数で 2 つのことを行う必要があります。:
AFX_EXTENSION_MODULE構造は、拡張機能、拡張 DLL がDllMainに入る前に実行される通常のスタティック オブジェクト構築の一部として初期化されているランタイム クラス オブジェクトのコピーを含む、DLL のモジュール状態のコピーを保持するために使用されます。たとえば:
静的な AFX_EXTENSION_MODULE extensionDLL;extern"C"int APIENTRYDllMain (HINSTANCE hInstance, DWORD dwReason、LPVOID){特価;//この DLL の拡張モジュールの初期化確認 (AfxInitExtensionModule (extensionDLL、hInstance))(&N)
AFX_EXTENSION_MODULE構造体に格納されているモジュールの情報は、 CDynLinkLibraryオブジェクトにコピーことができます。たとえば:
//CDynLinkLibrary クラスIMPLEMENT_DYNAMIC (CDynLinkLibrary、CCmdTarget)・ ・ コンス トラクターCDynLinkLibrary::CDynLinkLibrary (AFX_EXTENSION_MODULEamp、状態、BOOL bSystem){#ifndef _AFX_NO_OLE_SUPPORTm_factoryList.Construct (offsetof (COleObjectFactory、m_pNextFactory));#endifm_classList.Construct (offsetof (CRuntimeClass、m_pNextClass));//AFX_EXTENSION_MODULE 構造体から情報をコピーASSERT (state.hModule! = NULL);m_hModule = state.hModule;m_hResource = state.hResource;m_classList.m_pHead = state.pFirstSharedClass;#ifndef _AFX_NO_OLE_SUPPORTm_factoryList.m_pHead = state.pFirstSharedFactory;#endifm_bSystem = bSystem(&A)
参照特価;AfxInitExtensionModule、 AfxTermExtensionModule(&N)