AfxInitExtensionModule
更新 : 2007 年 11 月
DLL を初期化するために、拡張機能 DLL の DllMain の中でこの関数を呼び出します。
BOOL AFXAPI AfxInitExtensionModule(
AFX_EXTENSION_MODULE& state,
HMODULE hModule
);
パラメータ
state
初期化後の拡張 DLL モジュールの状態を含む AFX_EXTENSION_MODULE 構造体 構造体への参照。これらの状態には、DllMain に入る前に実行される通常のスタティック オブジェクト構築の一部として、拡張機能 DLL によって初期化されたランタイム クラス オブジェクトのコピーが含まれます。hModule
拡張機能 DLL モジュールのハンドル。
戻り値
拡張機能 DLL の初期化に成功した場合は TRUE を返します。それ以外の場合は FALSE を返します。
解説
次に例を示します。
static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL = { NULL, NULL };
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");
// Extension DLL one-time initialization
if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
return 0;
AfxInitExtensionModule は DLL の HMODULE のコピーを作成し、後で CDynLinkLibrary オブジェクトが作成されたときに使用するため、DLL のランタイム クラス (CRuntimeClass 構造体) とそのオブジェクト ファクトリ (COleObjectFactory オブジェクト) を取り込みます。
MFC 拡張 DLL では、DllMain 関数で次の 2 つの処理を行う必要があります。
AfxInitExtensionModule を呼び出し、戻り値を確認します。
DLL が CRuntimeClass 構造体 オブジェクトをエクスポートするか、または独自のカスタム リソースを持っている場合、CDynLinkLibrary オブジェクトを作成します。
各プロセスを拡張機能 DLL から切り離すとき (プロセスの終了時、または AfxFreeLibrary 呼び出しの結果としての DLL のアンロード時)、AfxTermExtensionModule を呼び出して、拡張機能 DLL をクリアできます。
必要条件
ヘッダー : afxdll_.h