AFX_EXTENSION_MODULE 構造体
AFX_EXTENSION_MODULE
は、MFC 拡張 DLL モジュールの状態を保持するために、MFC 拡張 DLL の初期化中に使用されます。
構文
struct AFX_EXTENSION_MODULE
{
BOOL bInitialized;
HMODULE hModule;
HMODULE hResource;
CRuntimeClass* pFirstSharedClass;
COleObjectFactory* pFirstSharedFactory;
};
パラメーター
bInitialized
DLL モジュールが AfxInitExtensionModule
で初期化されている場合は TRUE。
hModule
DLL モジュールのハンドルを指定します。
hResource
DLL カスタム リソース モジュールのハンドルを指定します。
pFirstSharedClass
DLL モジュールの最初のランタイム クラスに関する情報 ( CRuntimeClass
構造体) へのポインター。 ランタイム クラスリストの先頭を指定するために使用されます。
pFirstSharedFactory
DLL モジュールの最初のオブジェクト ファクトリ ( COleObjectFactory
オブジェクト) へのポインター。 クラス ファクトリ リストの先頭を指定するために使用されます。
解説
MFC 拡張 DLL は、 DllMain
関数で次の 2 つの操作を行う必要があります。
AfxInitExtensionModule を呼び出し、戻り値を確認します。
DLL が CRuntimeClass オブジェクトをエクスポートする場合、または独自のカスタム リソースがある場合は、
CDynLinkLibrary
オブジェクトを作成します。
AFX_EXTENSION_MODULE
構造体は、MFC 拡張 DLL モジュールの状態のコピーを保持するために使用されます。これには、DllMain
が入力される前に実行される通常の静的オブジェクト構築の一部として MFC 拡張 DLL によって初期化されたランタイム クラス オブジェクトのコピーが含まれます。 次に例を示します。
static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL;
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
// Remove this if you use lpReserved
UNREFERENCED_PARAMETER(lpReserved);
if (dwReason == DLL_PROCESS_ATTACH)
{
TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
// MFC extension DLL one-time initialization
if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
return 0;
AFX_EXTENSION_MODULE
構造体に格納されているモジュール情報は、CDynLinkLibrary
オブジェクトにコピーできます。 次に例を示します。
IMPLEMENT_DYNAMIC(CMyDynLinkLibrary, CDynLinkLibrary)
CMyDynLinkLibrary::CMyDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem)
: CDynLinkLibrary(state, bSystem)
{
#ifndef _AFX_NO_OLE_SUPPORT
m_factoryList.Construct(offsetof(COleObjectFactory, m_pNextFactory));
#endif
m_classList.Construct(offsetof(CRuntimeClass, m_pNextClass));
// copy info from 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;
}
要件
ヘッダー: afx.h
関連項目
構造体、スタイル、コールバック関数とメッセージ マップ
AfxInitExtensionModule
AfxTermExtensionModule