我想創建一個.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()'。 –