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 解决了我的问题。
再次感谢汉斯
像往常一样,我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 解决了我的问题。
再次感谢汉斯