AfxInitExtensionModule

调用在扩展 DLL 的 DllMain 函数初始化此 DLL。

BOOL AFXAPI AfxInitExtensionModule( 
   AFX_EXTENSION_MODULE& state, 
   HMODULE hModule  
);

参数

  • state
    在初始化之后, AFX_EXTENSION_MODULE 结构 结构的引用将包含扩展 DLL 模块的状态。 状态包含运行时类对象的一份副本,该对象在 DllMain 输入之前由作为一般静态对象构造一部分执行的扩展 DLL 初始化。

  • hModule
    扩展 DLL 模块的句柄。

返回值

TRUE,如果扩展 DLL 成功初始化;否则,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 副本,捕获DLL 运行时类(CRuntimeClass结构)以及在创建 CDynLinkLibrary 对象时使用对象工厂(COleObjectFactory 对象)。

MFC 扩展 DLL 需要在DllMain 函数中做两件事情:

  • 调用 AfxInitExtensionModule 并检查返回值。

  • 如果 DLL 将导出 CRuntimeClass 结构 对象或有自己的自定义资源,创建 CDynLinkLibrary 对象。

当每个进程从扩展DLL(发生在进程退出时或由于AfxFreeLibrary调用卸载DLL时)分离时,可以调用AfxTermExtensionModule清理扩展DLL。

要求

Header: afxdll_.h

请参见

参考

AfxTermExtensionModule

概念

MFC 宏和全局函数