我正在將一個非常老的插件的 GUI 從 win32 移植到 MFC。該對話框過去是通過呼叫以下內容來啟動的:
DialogBoxParam( GetDLLInstance(), ..., GetHWND(), ..., ... )
在嘗試除錯為什么我的 MFC 解決方案不起作用時,我發現,如果我將上面的代碼替換GetDLLInstance()為nullptr. 因此,要使代碼正常作業,似乎必須為其提供正確的HINSTANCE,因為默認的似乎是錯誤的。由于 MFC 只是這些 win32 函式的包裝器,我認為它也必須提供此資訊。但是,在啟動 -CDialogEx派生類時,我沒有找到一種方法來設定HINSTANCE. 那么我如何告訴 MFC 小部件HINSTANCE對其內部呼叫的正確性DialogBoxParam( ... )呢?
uj5u.com熱心網友回復:
AfxSetResourceHandle設定 HINSTANCE 句柄,該句柄確定應用程式默認資源的加載位置。
正如@RbMm 所說,您需要在 rundialog 之前設定并立即恢復。
對于無模式對話框,
HMODULE hPrevious = AfxGetResourceHandle();
AfxSetResourceHandle(hMod);
CMyDialog *pDlg = new CMyDialog();
pDlg->Create(ID_DLG, this);
AfxSetResourceHandle(hPrevious);
pDlg->ShowWindows(SW_SHOW);
對于模態對話框,請參閱答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/530409.html
標籤:C 温纳皮mfc
上一篇:如何在使用ReadConsoleInput時忽略“按鍵事件”
下一篇:常用的正則運算式
