|
非模式對話框的創(chuàng)建不能象模式對話框一樣調(diào)用DoModal來實現(xiàn),
而應(yīng)該用Create函數(shù)來創(chuàng)建,Create的原形如下: BOOL Create(UINT nIDTemplate,CWnd* pParentWnd = NULL) 其中nIDTemplate是對話框模板資源ID,pParentWnd是父窗口指針, 假如pParentWnd不為NULL,則此非模式對話框總在父窗口之上, 我們舉例來說明在SDI程序中非模式對話框的建立過程: 首先我們創(chuàng)建一個SDI程序。 然后在資源編輯器里面制作好對話框模板IDD_MYDIALOG, 雙擊對話框資源,為對話框創(chuàng)建新的類CMyDialog,基類為CDialog 我們?yōu)閂IEW類添加一個成員變量CMyDialog m_mydialog; 然后為VIEW類添加WM_CREATE消息處理函數(shù),在其中加上 m_mydialog.Create(IDD_MYDIALOG,this);///創(chuàng)建 m_mydialog.ShowWindow(SW_SHOW); ///顯示 至此我們已經(jīng)成功地創(chuàng)建并顯示出一個非模式對話框, 值得注意的是在摧毀非模式對話框不能調(diào)用CDialog::OnCancel, 因為OnCancel調(diào)用了EndDialog,而EndDialog只是使對話框不可見, 并沒有刪除它,所以應(yīng)用程序需要重載OnCancel,并在其中調(diào)用 DestroyWindow。 |
|
|