次の方法で共有


AfxInitExtensionModule

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 の HMODULECDynLinkLibrary のオブジェクトが作成されるとコピーを作成し、 DLL のランタイム クラス (CRuntimeClass の構造体)、後で使用するためのオブジェクト ファクトリ (COleObjectFactory のオブジェクト)をキャプチャします。

MFC 拡張ダイナミック リンク ライブラリは DllMain の関数の 2 種類の操作を行う必要があります:

  • AfxInitExtensionModule をダイヤル、戻り値をチェックします。

  • DLL は CRuntimeClass 構造体 のオブジェクトをエクスポートするか、独自のカスタム リソースがある場合は CDynLinkLibrary のオブジェクトを作成します。

削除すると、プロセス終了から拡張 DLL は、各プロセスのデタッチ ( AfxTermExtensionModule をダイヤルする発生したとき、または DLL が AfxFreeLibrary の呼び出しの結果として)アンロードされる拡張 DLL。

必要条件

Header: afxdll_.h

参照

関連項目

AfxTermExtensionModule

概念

MFC マクロとグローバル