我想创建一个.dll文件,它会显示一些对话框。win32 - 对话框里面的.dll
在我的.dll我有这样的代码:
HWND hDlg = CreateDialogParam(NULL, MAKEINTRESOURCE(IDD_RANKING_DIALOG), NULL, msgProc, NULL);
if (!hDlg) {
ShowError(GetLastErrorAsString().c_str());
return false;
}
ShowError
调用消息框,GetLastErrorAsString()
只是调用标准GetLastError
,并将其转换为字符串。
我有这样的输出:
在图像文件中找不到指定的资源类型。
然后我有一个标准的win32窗口应用程序,在那里我调用方法,它调用上述代码。
DialogTest test;
test.showDialog(); // calls functionality from .dll
我在做什么错了?我需要将资源文件链接到.dll吗?
我正在使用Visual Studio 2010和dialog
在我的资源文件(.rc)中指定。
您在'hInstance'参数传递'NULL'到'CreateDialogParam()'。这意味着对话资源将被加载到已加载DLL的可执行文件中,而不是在DLL本身中查找。您应该传递与您的DLL相关的'HINSTANCE'。 –
我曾尝试使用GetModuleHandle(0)而不是NULL,但它并没有帮助。那么我怎么才能得到DLL的HINSTANCE。 –
它作为第一个参数传递给你的'DllMain()'。 –