在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:訊息的說明內容ID,0表示使用系統預設說明內容。
使用範例:
#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 訊息框中顯示Abort、Retry、Ignore按鈕
MB_OK 顯示OK按鈕
MB_OKCANCEL 顯示OK、Cancel按鈕
MB_RETRYCANCEL 顯示Retry、Cancel按鈕
MB_YESNO 顯示Yes、No按鈕
MB_YESNOCANCEL 示Yes、No、Cancel按鈕
圖示風格(nType):
MB_ICONINFORMATION 顯示一個i圖標,表示提示
MB_ICONEXCLAMATION 顯示一個驚歎號,表示警告
MB_ICONSTOP 顯示手形圖標,表示警告或嚴重錯誤
MB_ICONQUESTION 顯示問號圖標,表示疑問
回傳值(對應不同按鈕點選):
IDABORT 按下放棄(Abort)
IDCANCEL按下取消(Cancel)
IDIGNORE 按下忽略(Ignore)
IDNO 按下否(No)
IDOK 按下確定(OK)
IDRETRY 按下重試(Retry).
IDYES按下是(Yes).
留言列表