在共享 MFC DLL 中,可以通过重写 DllMain 函数来处理 DLL_PROCESS_ATTACH 事件。以下是一个示例代码:

#include <afxwin.h>

BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    if (ul_reason_for_call == DLL_PROCESS_ATTACH)
    {
        // 在 DLL_PROCESS_ATTACH 事件中执行初始化操作
        if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0))
        {
            // 初始化 MFC 失败,可以进行相应的错误处理
            return FALSE;
        }

        // 执行其他的初始化操作
        // ...

        // 返回 TRUE 表示成功加载 DLL
        return TRUE;
    }
    else if (ul_reason_for_call == DLL_PROCESS_DETACH)
    {
        // 在 DLL_PROCESS_DETACH 事件中执行清理操作
        // ...

        // 返回 TRUE 表示成功卸载 DLL
        return TRUE;
    }

    // 返回 FALSE 表示加载 DLL 失败
    return FALSE;
}

DllMain 函数中,我们首先判断 ul_reason_for_call 参数是否为 DLL_PROCESS_ATTACH,如果是的话,就执行初始化操作。在这个示例中,我们使用 AfxWinInit 函数来初始化 MFC。然后,可以在此处执行其他的初始化操作。

如果 AfxWinInit 初始化失败,可以根据需要进行相应的错误处理,并返回 FALSE 表示加载 DLL 失败。

如果 ul_reason_for_call 参数为 DLL_PROCESS_DETACH,则表示 DLL 正在卸载,可以在此处执行清理操作。

最后,根据加载或卸载是否成功,我们返回相应的值。返回 TRUE 表示成功加载或卸载 DLL,返回 FALSE 表示加载 DLL 失败。

共享MFC dll 如何操作DLL_PROCESS_ATTACH

原文地址: http://www.cveoy.top/t/topic/hQSU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录