Visual C++提供三個消息對話框函數,他們的原型爲
int AfxMessageBox(LPCTSTR lpText, UINT nType = MB_OK, UINT nIDHelp = 0);
int MessageBox(HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT nType);
int CWnd::MessageBox(LPCTSTR lpText, LPCTSTR lpCaption = NULL, UINT nType = MB_OK);
parameter:
hWnd:
此參數代表消息框擁有的窗口。如果爲NULL,則消息框沒有擁有窗口。
lpText:
消息框中要顯示的內容。如果使用了Unicode庫,則把文本變成:TEXT(/*sometext*/)
lpCaption:
消息框的標題。如果使用了Unicode庫,則把文本變成:TEXT(/*sometext*/)
nType:
指定一個決定對話框的內容和行爲的位標誌集。此參數可以爲下列標誌組中標誌的組合。指定下列標誌中的一個來顯示消息框中的按鈕以及圖標。
nIDHelp:
表示信息的上下文幫助。
MFC特例:
假如您創建了一個MFC工程,如果工程文檔中有MainFrm.cpp的話,那麼,本函數就被封裝成了:
int MessageBox(LPCTSTR lpszText,LPCTSTR lpszCaption=NULL,UINT nType = MB_OK);
返回值:指定函數的結果。
下面的例子可以讓我們對比兩種函數的用法,兩行代碼的功能都是顯示一個消息框,內容爲“示例用法”
::MessageBox(NULL, "示例用法", "demo", MB_OK);
MessageBox("示例用法"); //採用了一些C++的語法特性使用消息框用起來更順手
這 3 個函數分別是 MC 全局函數、Windows API 函數和 CWnd 類的成員函數,他們的功能基本相同,但適用範圍有所不同。
AfxMessageBox()和 MessageBox()函數可以在程序的任何地方使用,而 CWnd::MessageBox()函數只能用於控件、對話框、窗口等一些窗口類中。
這 3 個函數都將返回用戶選擇按鈕的情況,如返回值 IDOK、IDCANCEL、IDABORT 分別表示用戶按下了 OK、Cancel、Abort 按鈕。
uType參數:
按鈕參數 |
含義 |
MB_OK |
默認值。有一個確認按鈕在裏面。 |
MB_YESNO |
有是和否在裏面。 |
MB_ABORTRETRYIGNORE |
有Abort(放棄),Retry(重試)和Ignore(跳過) |
MB_YESNOCANCEL |
消息框含有三個按鈕:Yes,No和Cancel |
MB_RETRYCANCEL |
有Retry(重試)和Cancel(取消) |
MB_OKCANCEL |
消息框含有兩個按鈕:OK和Cancel |
圖標參數 | 含義 |
MB_ICONEXCLAMATION |
一個驚歎號出現在消息框 |
MB_ICONWARNING |
一個驚歎號出現在消息框 |
MB_ICONINFORMATION |
一個圓圈中小寫字母i組成的圖標出現在消息框 |
MB_ICONASTERISK |
一個圓圈中小寫字母i組成的圖標出現在消息框 |
MB_ICONQUESTION |
一個問題標記圖標出現在消息框 |
MB_ICONSTOP |
一個停止消息圖標出現在消息框 |
MB_ICONERROR |
一個停止消息圖標出現在消息框 |
MB_ICONHAND |
一個停止消息圖標出現在消息框 |