AfxMessageBox

AfxMessageBox

AfxMessageBox是一種函式原型,特點是應用程式的執行檔,功能是訊息框內部顯示的文本,AfxMessageBox和CWnd類成員函式類似,使用起來很方便,因為是Afx 基於框架的函式。

函式原型

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 );

返回值

返回值有8種,如果記憶體不夠,則返回0,否則返回以下值中的一種,分別對應相應的按鈕被點擊:

IDABORT、IDCANCEL、IDIGNORE、IDNO、IDOK 、IDRETRY、IDYES。

MSDN原文:

Zero if there is not enough memory to display the message box; otherwise one of the following values is returned:

IDABORT The Abort button was selected.

IDCANCEL The Cancel button was selected.

IDIGNORE The Ignore button was selected.

IDNO The No button was selected.

IDOK The OK button was selected.

IDRETRY The Retry button was selected.

IDYES The Yes button was selected.

If a message box has a Cancel button, the IDCANCEL value will be returned if either the ESC key is pressed or the Cancel button is selected. If the message box has no Cancel button, pressing the ESC key has no effect.

區別

與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.AfxMessageBox是模態對話框,你不進行確認時程式不往下運行,它會阻塞你當前的執行緒,除非你程式是多執行緒的程式,否則只有等待模態對話框被確認。

3、如果用MFC的話,請儘量使用afxmessagebox,因為這個全局的對話框最安全,也最方便。

但是在WIN32 SDK的情況下只能使用MESSAGEBOX。

相關詞條

相關搜尋

熱門詞條

聯絡我們