次の方法で共有


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

参照

概念

MFC マクロとグローバル

参照

AfxTermExtensionModule