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 モジュールが で初期化されている場合は TRUE AfxInitExtensionModule

hModule
DLL モジュールのハンドルを指定します。

hResource
DLL カスタム リソース モジュールのハンドルを指定します。

pFirstSharedClass
DLL モジュールの最初のランタイム CRuntimeClass クラスに関する情報 (構造体) へのポインター。 ランタイム クラス リストの開始を提供するために使用されます。

pFirstSharedFactory
DLL モジュールの最初のオブジェクト ファクトリ (オブジェクト) への COleObjectFactory ポインター。 クラス ファクトリ リストの開始を提供するために使用されます。

注釈

MFC 拡張 DLL では、関数で次の 2 つのことを行う必要 DllMain があります。

  • AfxInitExtensionModule を呼び出し、戻り値を確認します。

  • DLL が CDynLinkLibraryCRuntimeClass オブジェクトをエクスポートする場合、または独自のカスタム リソースを持つ場合は、 オブジェクトを作成します。

AFX_EXTENSION_MODULE構造体は、MFC 拡張 DLL モジュールの状態のコピーを保持するために使用されます。MFC 拡張 DLL DllMain によって初期化されたランタイム クラス オブジェクトのコピーは、前に実行される通常の静的オブジェクト構築の一部として入力されます。 次に例を示します。

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