MFC中MessageBox和AfxMessageBox的用法

1、消息框是個很經常使用的控件,屬性比較多,本文列出了它的一些經常使用方法,及指出了它的一些應用場合。
1.MessageBox("這是一個最簡單的消息框!");
2.MessageBox("這是一個有標題的消息框!","標題");
3.MessageBox("這是一個肯定 取消的消息框!","標題", MB_OKCANCEL );
4.MessageBox("這是一個警告的消息框!","標題", MB_ICONEXCLAMATION );
5.MessageBox("這是一個兩種屬性的消息框!","標題", MB_ICONEXCLAMATION|MB_OKCANCEL );
安全

6.if(MessageBox("一種經常使用的應用","標題",MB_ICONEXCLAMATION|MB_OKCANCEL)==IDCANCEL)return;多線程

 

2、附其它經常使用屬性框架

系統默認圖標,可在消息框上顯示
X錯誤  MB_ICONHAND, MB_ICONSTOP, and MB_ICONERROR
?詢問  MB_ICONQUESTION
!警告  MB_ICONEXCLAMATION and MB_ICONWARNING
i信息  MB_ICONASTERISK and MB_ICONINFORMATION
ide

 

3、按鈕的形式
MB_OK 默認
MB_OKCANCEL 肯定取消
MB_YESNO 是否
MB_YESNOCANCEL 是否取消
函數

 

4、返回值
IDCANCEL 取消被選
IDNO 否被選
IDOK 肯定被選
IDYES 是被選
spa

 

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

  在第一種形式中,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()與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是模態對話框,你不進行確認時程序不往下運行,它會阻塞你當前的線程爲,除非你程序是多線程的程序,不然只有等待模態對話框被確認

  三、若是用MFC的話,請儘可能使用afxmessagebox,由於這個全局的對話框最安全,也最方便。

  可是在WIN32 SDK的狀況下只能使用MESSAGEBOX。

相關文章
相關標籤/搜索