VC/MFC下使用MessageBox()AfxMessageBox()的比較整理

 

使用區別:

類別庫:

 MessageBox()是標準的Windows API函數;

 AfxMessageBox()MFC類別庫提供的全域函數,提供了多種重載形式。

呼叫限制:

 MessageBox()函數只能在CWnd類的繼承類中使用;

 AfxMessageBox()函數在任何類都可以使用。

使用難易:

 MessageBox()函數的參數豐富較靈活,故也較不易使用;

 AfxMessageBox()函數的參數單純且有多載,較簡易使用。

標題修改:

 MessageBox()可以控制訊息框標題,利於告知使用者資訊;

 AfxMessageBox()不能改變訊息框標題,較常用於除錯輸出變數、中斷程式或警告。

強制回應及非強制回應訊息框(Modal & Modeless)

 MessageBox()第一個參數hWnd = NULL時可使用非強制回應訊息框(Modeless),跳出後不等回應繼續往下執行;

 AfxMessageBox()只能使用強制回應訊息框(Modal)

 

 

MessageBox()

AfxMessageBox()

類別庫

Win32 API

MFC

適用範圍

Win32 程式/ CWnd 類別

MFC程式全域函數

自訂標題

不可

使用難易度

較難

較易

強制回應

均可(Modal & Modeless)

強制回應(Modal)

 

函數原型:

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:表示在訊息框內顯示的內容,訊息框的標題為應用程式名稱。

 nIDPrompt:表示在訊息框內顯示的字串表(String Table)資源ID,使用時會自動從字串表載入字串。

 nType:為訊息框中顯示的按鈕和圖示的組合,可以使用 | () 來組合各種風格。

 nIDHelp:訊息的說明內容ID0表示使用系統預設說明內容。

 

使用範例:

 #define IDS_STR_TABLE "這是使用字串表";

 CString str = "這是直接使用字串";

 AfxMessageBox(IDS_STR_HELLO);

 AfxMessageBox(str);

 AfxMessageBox("這是加入按鈕及圖示的訊息框", MB_YESNO | MB_ICONSTOP);

 

 

MessageBox的函數原型

 int MessageBox(HWND hWnd, LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,UINT nType =MB_OK );

 

 hWnd:父視窗(Parent Window)Handle如果為NULL則設為非強制回應模式(Modeless)

 lpszTex:表示在訊息框內顯示的內容

 lpszCaption:訊息框標題(預設為空)

 nType:訊息框的風格

 

使用範例:

 MessageBox("這是最簡單的訊息框");

 MessageBox("這訊息框是自訂標題", "這是標題");

 MessageBox("這訊息框有確定取消按鈕", "這是標題", MB_OKCANCEL );

 MessageBox("這訊息框有警告圖示", "這是標題", MB_ICONEXCLAMATION );

 MessageBox("這訊息框有確定取消按鈕搭配警告圖示", "這是標題", MB_ICONEXCLAMATION | MB_OKCANCEL );

 if( MessageBox("這是一個常見的互動方式", "這是標題", MB_ICONEXCLAMATION | MB_OKCANCEL) == IDCANCEL )

 {

   //按下取消

     return;

 }

 

 

下列屬性兩者皆適用:

 

按鈕風格(nType)

 MB_ABORTRETRYIGNORE 訊息框中顯示AbortRetryIgnore按鈕

 MB_OK 顯示OK按鈕

 MB_OKCANCEL 顯示OKCancel按鈕

 MB_RETRYCANCEL 顯示RetryCancel按鈕

 MB_YESNO 顯示YesNo按鈕

 MB_YESNOCANCEL YesNoCancel按鈕

 

圖示風格(nType)

 MB_ICONINFORMATION 顯示一個i圖標,表示提示

 MB_ICONEXCLAMATION 顯示一個驚歎號,表示警告

 MB_ICONSTOP 顯示手形圖標,表示警告或嚴重錯誤

 MB_ICONQUESTION 顯示問號圖標,表示疑問

 

 MessageBox  

 

回傳值(對應不同按鈕點選)

 IDABORT 按下放棄(Abort)

 IDCANCEL按下取消(Cancel)

 IDIGNORE 按下忽略(Ignore)

 IDNO 按下否(No)

 IDOK 按下確定(OK)

 IDRETRY 按下重試(Retry).

 IDYES按下是(Yes).

 

 

arrow
arrow
    創作者介紹
    創作者 NoSleep 的頭像
    NoSleep

    NoSleep | 資訊癮想力

    NoSleep 發表在 痞客邦 留言(1) 人氣()