微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找不到WinAPI CreateDialog Ressource错误0x715

如何解决找不到WinAPI CreateDialog Ressource错误0x715

通常,经过数小时的研究,我在这里发布了内容,但仍未成功

我有一个用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编译详细选项时)时,我收到以下消息:

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

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

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

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

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

我绝对不知道为什么会这样。任何帮助都将受到欢迎。

预先感谢

Antoine

解决方法

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

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

再次感谢汉斯

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。