以下是呼叫對話框的介面函式
void ShowDlg(void) // 顯示對話框
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
CtestDlg cdlg; //定義用來測驗對話框
int b =cdlg.DoModal();//對話框正常顯示
Driver dlg; // 定義對話框變數(Driver是我自己定義的對話框類名)
// AfxEnableControlContainer();
int a = 0;
a = dlg.DoModal(); // 對話框不顯示
}
CtestDlg 是我新建的測驗對話框1,能正常顯示
Driver是我正式要用到的對話框,其中加載了一個OCX控制元件,無法顯示
經過除錯,我發現兩者的區別是測驗對話框1在cdlg.DoModal()的時候會呼叫DoDataExchange函式,而加載了控制元件的對話框2不會呼叫,這也應該是導致后者不能正常顯示的原因,這是為什么呢?
uj5u.com熱心網友回復:
你Dll中呼叫了AfxOleInit();類沒有?如App類的InitInstance函式中呼叫AfxOleInit();uj5u.com熱心網友回復:
網上查了一下,有的說在工程的InitInstance()函式中添加AfxEnableControlContainer(),我也添加過了,但在執行dlg.DoModal();時出現奔潰uj5u.com熱心網友回復:
呼叫了,這個是程式自動添加的,并且我還加了個AfxEnableControlContainer(),如下
BOOL CMy840DApp::InitInstance()
{
CWinApp::InitInstance();
AfxOleInit();
AfxEnableControlContainer();
return TRUE;
}
uj5u.com熱心網友回復:
有無呼叫CoInitialize() ?uj5u.com熱心網友回復:
沒有轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/129746.html
標籤:進程/線程/DLL
上一篇:MFC分頁控制元件頁面交疊怎么做
