WinAPI 创建对话框资源未找到错误 0x715

WinAPI CreateDialog Ressource not found error 0x715

像往常一样,我post在这里经过几个小时的研究和尝试但没有成功

我有一个用C写的旧dll。目前,它没有界面,但我需要给它添加一个对话框。

我使用 VS2017 并尝试了以下操作:

使用 VS2017 资源编辑器,我添加了一个对话框(id : IDD_DIALOG_REPLAY,由资源编辑器在 resource.h 文件中自动定义为 101)并添加了以下代码来创建我的对话框:

INITCOMMONCONTROLSEX InitCtrls;
InitCtrls.dwSize = sizeof(InitCtrls);
InitCtrls.dwICC = ICC_LINK_CLASS | ICC_STANDARD_CLASSES | ICC_WIN95_CLASSES;
InitCommonControlsEx(&InitCtrls);

HWND  hDialog = 0;
hDialog = CreateDialog(pSGL->hInstance,MAKEINTRESOURCE(IDD_DIALOG_REPLAY),NULL,WndProc);

if (!hDialog)
{
    char buf [100];
    wsprintf (buf, "Error x%x", GetLastError ());
    MessageBox (0, buf, "CreateDialog", MB_ICONEXCLAMATION | MB_OK);
    return 1;
}

ShowWindow(hDialog, SW_SHOW);

注意 1:消息循环已经存在于同一线程中执行的另一个 dll 中

注意 2:我第一次使用回调函数 WndProc,它非常标准,基本上执行 DefWindowProc 函数

当我编译我的 dll(设置了 ressource compilation verbose 选项)时,我收到以下消息:

1>Writing DIALOG:101,   lang:0x40c, size 452.
1>Writing AFX_DIALOG_LAYOUT:101,    lang:0x40c, size 2.

当我在 VS2017 中打开我的 dll 的二进制文件时,我可以看到有一个对话框 id 101

=> 该对话框实际上存在于我的二进制文件中。

但是当我执行它时,出现错误 0x715:ERROR_RESOURCE_TYPE_NOT_FOUND,当然,没有创建对话框。

注意:无论对话框是否包含控件或是否为空,都会发生这种情况

我完全不知道为什么会这样。非常欢迎任何帮助。

提前致谢,

安托万

好的,感谢Hans,我找到了原因。 我正在使用 exe hInstance 等,程序正在寻找 exe 中的对话框而不是 dll 中的对话框。

将 hInstance 更改为 dll 解决了我的问题。

再次感谢汉斯