模態對話框 DoModal的用法 (vs2008)與非模態對話框


Windows對話框分為兩類:模態對話框和非模態對話框。

       模態對話框,當它彈出后,本應用程序其他窗口將不再接受用戶輸入,只有該對話框響應用戶輸入,在對它進行相應操作退出后,其他窗口才能繼續與用戶交互。

       非模態對話框,它彈出后,本程序其他窗口仍能響應用戶輸入。非模態對話框一般用來顯示提示信息等。

彈出模態對話框

   彈出對話框比較關鍵的一個函數,就是對話框類的DoModal()函數。CDialog::DoModal()函數的原型為:

       virtual INT_PTR DoModal();   

      DoModal是一個函數,可以用來顯示一個模態對話框。此成員函數用來顯示一個模態對話框。其返回值對應於用來關閉對話框的控件的ID。  此函數返回后,Windows響應這個對話框,所有的屬性頁都會被銷毀。要顯示一個非模態對話框,請調用Create來代替此函數。

     返回值:如果函數成功則返回IDOK或IDCANCEL;否則返回0或-1。IDOK和IDCANCEL都是常量,它表明用戶選擇的是OK按鈕還是Cancel按鈕。

       調用了它對話框就會彈出,返回值是退出對話框時所點的按鈕的ID,比如,我們點了“退出”按鈕,那么DoModal返回值為IDCANCEL。

代碼:

首先新建一個dialog,取名為TipDlg,並對該對話框添加新類

 1 void CTestDlg::OnBnClickedBtnAdd()
 2 {
 3     // TODO: 在此添加控件通知處理程序代碼、
 4 
 5     //////////////////////////////////////////
 6     INT_PTR nRes;  //用於保存DoModal函數的返回值
 7 
 8     CTipDlg tipDlg; //構造對話框CTipDlg的實例
 9     nRes=tipDlg.DoModal(); //彈出對話框
10     if(IDCANCEL==nRes)  //判斷對話框退出后返回值是否為IDCANCEL,如果是證明選擇了退出鍵返回IDCANCEL,則執行return,否則繼續向下執行
11         return;
12         /*要執行的代碼*/
13 }

非模態對話框的創建:http://www.jizhuomi.com/software/162.html

CDialog7為新建的對划框類

CDialog7 *dlg7=new CDialog7; //創建非模態對話框實例
dlg7->Create(IDD_DIALOG7,this);
dlg7->ShowWindow(SW_SHOW); //顯示非模態對話框*/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM