非模式對話(huà)框的創(chuàng )建不能象模式對話(huà)框一樣調用DoModal來(lái)實(shí)現,
而應該用Create函數來(lái)創(chuàng )建,Create的原形如下:
BOOL Create(UINT nIDTemplate,CWnd* pParentWnd = NULL)
其中nIDTemplate是對話(huà)框模板資源ID,pParentWnd是父窗口指針,
假如pParentWnd不為NULL,則此非模式對話(huà)框總在父窗口之上,
我們舉例來(lái)說(shuō)明在SDI程序中非模式對話(huà)框的建立過(guò)程:
首先我們創(chuàng )建一個(gè)SDI程序。
然后在資源編輯器里面制作好對話(huà)框模板IDD_MYDIALOG,
雙擊對話(huà)框資源,為對話(huà)框創(chuàng )建新的類(lèi)CMyDialog,基類(lèi)為CDialog
我們?yōu)閂IEW類(lèi)添加一個(gè)成員變量CMyDialog m_mydialog;
然后為VIEW類(lèi)添加WM_CREATE消息處理函數,在其中加上
m_mydialog.Create(IDD_MYDIALOG,this);///創(chuàng )建
m_mydialog.ShowWindow(SW_SHOW); ///顯示
至此我們已經(jīng)成功地創(chuàng )建并顯示出一個(gè)非模式對話(huà)框,
值得注意的是在摧毀非模式對話(huà)框不能調用CDialog::OnCancel,
因為OnCancel調用了EndDialog,而EndDialog只是使對話(huà)框不可見(jiàn),
并沒(méi)有刪除它,所以應用程序需要重載OnCancel,并在其中調用
DestroyWindow。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。