AfxMessageBox的函數原型
int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 );
int AFXAPI AfxMessageBox( UINT nIDPrompt, UINT nType = MB_OK, UINT nIDHelp = (UINT) –1 );
在第一種形式中,lpszText表示在消息框內部顯示的文本,消息框的標題爲應用程序的可執行文件名(如Hello)。在第二種形式中,nIDPrompt爲要顯示的文本字符串在字符串表中的ID。函數調用時會自動從字符串表中載入字符串並顯示在消息框中。nType爲消息框中顯示的按鈕風格和圖標風格的組合,可以採用|(或)操作符組合各種風格。
按鈕風格
MB_ABORTRETRYIGNORE 消息框中顯示Abort、Retry、Ignore按鈕
MB_OK 顯示OK按鈕
MB_OKCANCEL 顯示OK、Cancel按鈕
MB_RETRYCANCEL 顯示Retry、Cancel按鈕
MB_YESNO 顯示Yes、No按鈕
MB_YESNOCANCEL 示Yes、No、Cancel按鈕
圖標風格
MB_ICONINFORMATION 顯示一個i圖標,表示提示
MB_ICONEXCLAMATION 顯示一個驚歎號,表示警告
MB_ICONSTOP 顯示手形圖標,表示警告或嚴重錯誤
MB_ICONQUESTION 顯示問號圖標,表示疑問
使用時,可以只調用AfxMessageBox(LPCTSTR lpszText);這樣默認風格爲AfxMessageBox(LPCTSTR lpszText,MB_OK|MB_ICONEXCLAMATION );
AfxMessageBox()與MessageBox()的區別
與AfxMessageBox類似的函數MessageBox,它是CWnd的類成員函數:
int MessageBox( LPCTSTR lpszText,LPCTSTR lpszCaption = NULL,UINT nType = MB_OK );
兩個函數的區別:AfxMessageBox比MessageBox簡單一些,因爲它是一個全局函數所以不需要對應的一個窗口類,但是不能控制消息框標題,常用於調試程序時的內 部 數據輸出或警告;MessageBox比較正式,常用在要提交的應用程序版本中,可以控制標題內容而不必採用含義不明的可執行文件名爲標題。
舉例:
AfxMessageBox("Are you sure?",MB_YESNO|MB_ICONQUESTION);
int a = MessageBox(TEXT("是否確認刪除?"),TEXT("Warning!!"),4);
if(a==6)
AfxMessageBox("Yes");
else
AfxMessageBox("No");
(其中#define IDYES 6 #define IDNO 7)
主要區別:
1.MessageBox 如果在非CWnd類中使用則是API函數,使用起來非常不便,必須指定標題和樣式
否則使用CWnd類的函數,只需一個內容參數就可以了,AfxMessageBox和CWnd類成員函數類似,使用起來很方便,因爲是Afx 基於框架的函數
2.MessageBox是模態對話框,你不進行確認時程序不往下運行,它會阻塞你當前的線程爲,除非你程序是多線程的程序,否則只有等待模態對話框被確認
3、如果用MFC的話,請儘量使用afxmessagebox,因爲這個全局的對話框最安全,也最方便。
但是在WIN32 SDK的情況下只能使用MESSAGEBOX。