AFX_EXTENSION_MODULE 構造

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)

参照特価;AfxInitExtensionModuleAfxTermExtensionModule(&N)

Index