程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 創建無模式對話框

創建無模式對話框

編輯:關於C語言

 

無模式對話框與有模式對話框不同的是在創建後其他窗口都可以繼續接收用戶輸入,因此無模式對話框有些類似一個彈出窗口。創建無模式對話框需要調用
BOOL CDialog::Create( UINT nIDTemplate, CWnd* pParentWnd = NULL );之後還需要調用
BOOL CDialog::ShowWindow( SW_SHOW);進行顯示,否則無模式對話框將是不可見的。相關代碼如下:

void CYourView::OnOpenDlg(void)
{
         /*假設IDD_TEST_DLG為已經定義的對話框資源的ID號*/
         CTestDlg *dlg=new CTestDlg;
         dlg->Create(IDD_TEST_DLG,NULL);
         dlg->ShowWindows(SW_SHOW);
         /*不要調用 delete dlg;*/
}

在上面的代碼中我們新生成了一個對話框對象,而且在退出函數時並沒有銷毀該對象。因為如果此時銷毀該對象(對象被銷毀時窗口同時被銷毀),而此時對話框還在顯示就會出現錯誤。那麼這就提出了一個問題:什麼時候銷毀該對象。我時常使用的方法有兩個:

  • 在對話框退出時銷毀自己:在對話框中重載OnOK與OnCancel在函數中調用父類的同名函數,然後調用DestroyWindow()強制銷毀窗口,在對話框中映射WM_DESTROY消息,在消息處理函數中調用delete this;強行刪除自身對象。相關代碼如下:
·                void CTestDlg1::OnOK()
·                {
·                         CDialog::OnOK();
·                         DestroyWindow();
·                }
·                 
·                void CTestDlg1::OnCancel()
·                {
·     						

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved