小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

VS2010/MFC編程入門之十六(對話框:消息對話框)

 牛人的尾巴 2015-10-27

       前面幾節(jié)雞啄米講了屬性頁對話框,我們可以根據(jù)所講內(nèi)容方便的建立自己的屬性頁對話框。本節(jié)講解Windows系統(tǒng)中最常用最簡單的一類對話框--消息對話框。

       我們在使用Windows系統(tǒng)的過程中經(jīng)常會見到消息對話框,提示我們有異常發(fā)生或提出詢問等。因為在軟件開發(fā)中經(jīng)常用到消息對話框,所以MFC提供了兩個函數(shù)可以直接生成指定風格的消息對話框,而不需要我們在每次使用的時候都要去創(chuàng)建對話框資源和生成對話框類等。這兩個函數(shù)就是CWnd類的成員函數(shù)MessageBox()和全局函數(shù)AfxMessageBox()。

       一.CWnd::MessageBox()函數(shù)和AfxMessageBox()函數(shù)的用法

       下面雞啄米就分別講解兩個函數(shù)的用法。

       1.CWnd::MessageBox()函數(shù)

       CWnd::MessageBox()的函數(shù)原型如下:

       int MessageBox(
           LPCTSTR lpszText,
           LPCTSTR lpszCaption = NULL,
           UINT nType = MB_OK
       );

       參數(shù)說明:

       lpszText:需要顯示的消息字符串。

       lpszCaption:消息對話框的標題字符串。默認值為NULL。取值為NULL時使用默認標題。

       nType:消息對話框的風格和屬性。默認為MB_OK風格,即只有“確定”按鈕。

       nType的取值可以是下面兩個表中任取一個值,也可以是各取一個值的任意組合。即可以指定一個對話框類型,也可以指定一個對話框圖標,還可以兩者都設(shè)定。

nType 取值 參數(shù)說明
MB_ABORTRETRY 有“終止”、“重試”和“忽略”按鈕
MB_OK 有“確定”按鈕
MB_OKCANCEL 有“確定”和“取消”按鈕
MB_RETRYCANCEL 有“重試”和“取消”按鈕
MB_YESNO 有“是”和“否”按鈕
MB_YESNOCANCEL 有“是”、“否”和“取消”按鈕


對話框類型表

nType 取值 顯示圖標
MB_ICONEXCLAMTION
MB_ICONWARNING
VS2010/MFC編程入門之十六(對話框:消息對話框)
MB_ICONASTERISK
MB_ICONINFORMATION
VS2010/MFC編程入門之十六(對話框:消息對話框)
MB_ICONQUESTION VS2010/MFC編程入門之十六(對話框:消息對話框)
MB_ICONHAND
MB_ICONSTOP
MB_ICONERROR
VS2010/MFC編程入門之十六(對話框:消息對話框)

 對話框圖標表

       如果想要設(shè)置nType的值為類型和圖標的組合,可以像這樣取值:MB_OKCANCEL | MB_ICONQUESTION。按位取或就可以了。

VS2010/MFC編程入門之十六(對話框:消息對話框)

       2.AfxMessageBox()函數(shù)

       AfxMessageBox()的函數(shù)原型為:

       int AfxMessageBox(
           LPCTSTR lpszText,
           UINT nType = MB_OK,
           UINT nIDHelp = 0
       );

       參數(shù)說明:

       lpszText:同CWnd::MessageBox()函數(shù)

       nType:CWnd::MessageBox()函數(shù)

       nIDHelp:此消息的幫助的上下文ID。默認值為0,取0時表示要使用應(yīng)用程序的默認幫助上下文。

       二.CWnd::MessageBox()和AfxMessageBox()的返回值

      我們在調(diào)用了上面兩個函數(shù)后,都可以彈出模態(tài)消息對話框。消息對話框關(guān)閉后,我們也都可以得到它們的返回值。兩者的返回值就是用戶在消息對話框上單擊的按鈕的ID,可以是以下值:

      IDABORT:單擊“終止”按鈕。
      IDCANCEL:單擊“取消”按鈕。
      IDIGNORE:單擊“忽略”按鈕。
      IDNO:單擊“否”按鈕。
      IDOK:單擊“確定”按鈕。
      IDRETRY:單擊“重試”按鈕。
      IDYES:單擊“是”按鈕。

      三.應(yīng)用舉例

     我們還是拿前面加法計算器的程序做例子。

       大家是否記得,在模態(tài)對話框及其彈出過程中我們修改了CAdditionDlg::OnBnClickedAddButton()函數(shù),在點了“計算”按鈕以后先彈出了一個模態(tài)對話框,詢問用戶是否確定要進行加法計算,并通過模態(tài)對話框DoModal函數(shù)的返回值判斷用戶選擇了“確定”還是“取消”。這些功能很明顯消息對話框完全能夠?qū)崿F(xiàn),雞啄米就使用消息對話框來替代原來的模態(tài)對話框。

       在非模態(tài)對話框的創(chuàng)建及顯示中,雞啄米注釋了模態(tài)對話框的相關(guān)代碼,加入了非模態(tài)對話框的創(chuàng)建和顯示代碼,我們在加入消息對話框之前將非模態(tài)對話框的代碼也注釋或刪除掉,確保此函數(shù)中不再生成原來的模態(tài)對話框或非模態(tài)對話框。

       修改后的CAdditionDlg::OnBnClickedAddButton()函數(shù)如下:

C++代碼
  1. void CAdditionDlg::OnBnClickedAddButton()   
  2. {   
  3.     // TODO: Add your control notification handler code here   
  4.  
  5.     INT_PTR nRes;   
  6.   
  7.     // 顯示消息對話框   
  8.     nRes = MessageBox(_T("您確定要進行加法計算嗎?"), _T("加法計算器"), MB_OKCANCEL | MB_ICONQUESTION);   
  9.     // 判斷消息對話框返回值。如果為IDCANCEL就return,否則繼續(xù)向下執(zhí)行   
  10.     if (IDCANCEL == nRes)   
  11.         return;   
  12.   
  13.     // 將各控件中的數(shù)據(jù)保存到相應(yīng)的變量   
  14.     UpdateData(TRUE);   
  15.   
  16.     // 將被加數(shù)和加數(shù)的加和賦值給m_editSum   
  17.     m_editSum = m_editSummand + m_editAddend;   
  18.   
  19.     // 根據(jù)各變量的值更新相應(yīng)的控件。和的編輯框會顯示m_editSum的值   
  20.     UpdateData(FALSE);   
  21.     // 設(shè)置屬性對話框為向?qū)υ捒?  
  22.     //sheet.SetWizardMode();   
  23. }  

        編譯運行,在運行結(jié)果對話框上點“計算”按鈕彈出以下消息對話框:

VS2010/MFC編程入門之十六(對話框:消息對話框)

       大家也可以將MessageBox函數(shù)換為AfxMessageBox()函數(shù),同時參數(shù)進行相應(yīng)修改,運行下看看效果。

       消息對話框就講到這里了。在以后的軟件開發(fā)中用到它的頻率很高,希望大家慢慢熟悉并掌握它。有問題歡迎回雞啄米博客交流或加入我們的編程入門群。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多