当我尝试在DllMain中显示时,我的对话框不显示

时间:2018-06-13 19:45:38

标签: c++ winapi dll dllmain

我在Visua Studio 2015中创建了一个包含对话框的Win32 dll,我使用传递给DllMain ()的hModule并使用ShowWindow ()来实际显示窗口,但是对话框没有出现。

我使用LoadLibrary()在另一个项目中加载此DLL。

问题出在哪里?这是我的代码:

BOOL APIENTRY DllMain( HMODULE hModule,
                   DWORD  ul_reason_for_call,
                   LPVOID lpReserved,
                   HINSTANCE hinstDLL
                 )
{
    switch (ul_reason_for_call)
    {
        case DLL_PROCESS_ATTACH:
            HWND hDlg;
            MSG msg;
            BOOL ret;
            BOOL sts;

            InitCommonControls();
            hDlg = CreateDialogParam(hinstDLL, MAKEINTRESOURCE(IDD_DIALOG1), 0, DialogProc, 0);

            if (!hDlg) {
                MessageBoxA(NULL,GetLastErrorAsString().c_str(),"",MB_OK);
                return false;
            }

            sts = ShowWindow(hDlg, 1);

            if (!sts)
            {
                MessageBoxA(NULL, GetLastErrorAsString().c_str(), "", MB_OK);
                return false;
            }

            while ((ret = GetMessage(&msg, 0, 0, 0)) != 0) {
                if (ret == -1)
                    return -1;

                if (!IsDialogMessage(hDlg, &msg)) {
                    TranslateMessage(&msg);
                    DispatchMessage(&msg);
                }
            }
        case DLL_THREAD_ATTACH:
        case DLL_THREAD_DETACH:
        case DLL_PROCESS_DETACH:
            break;
    }
    return TRUE;
}

0 个答案:

没有答案