|
前面幾節(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( 參數(shù)說明: lpszText:需要顯示的消息字符串。 lpszCaption:消息對話框的標題字符串。默認值為NULL。取值為NULL時使用默認標題。 nType:消息對話框的風格和屬性。默認為MB_OK風格,即只有“確定”按鈕。 nType的取值可以是下面兩個表中任取一個值,也可以是各取一個值的任意組合。即可以指定一個對話框類型,也可以指定一個對話框圖標,還可以兩者都設(shè)定。
對話框圖標表 如果想要設(shè)置nType的值為類型和圖標的組合,可以像這樣取值:MB_OKCANCEL | MB_ICONQUESTION。按位取或就可以了。
2.AfxMessageBox()函數(shù) AfxMessageBox()的函數(shù)原型為: int AfxMessageBox( 參數(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:單擊“終止”按鈕。 三.應(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++代碼
編譯運行,在運行結(jié)果對話框上點“計算”按鈕彈出以下消息對話框:
大家也可以將MessageBox函數(shù)換為AfxMessageBox()函數(shù),同時參數(shù)進行相應(yīng)修改,運行下看看效果。 消息對話框就講到這里了。在以后的軟件開發(fā)中用到它的頻率很高,希望大家慢慢熟悉并掌握它。有問題歡迎回雞啄米博客交流或加入我們的編程入門群。 |
|
|