函數原型:
int WINAPI MessageBox( _In_opt_ HWND hWnd, _In_opt_ LPCTSTR lpText, _In_opt_ LPCTSTR lpCaption, _In_ UINT uType );
_In_ 說明該參數是輸入的,_opt_ 說明該參數是可選參數
hWnd 為該消息框的父窗口句柄,如果為 NULL,則該消息框沒有父窗口
lpText 為消息框的內容
lpCaption 為消息框的標題
uType 為指定一個決定對話框的內容和行為的位標志集,此參數可以通過指定下列標志或標志的組合,來顯示消息框中的按鈕以及圖標
代碼:
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdLine) { MessageBox(NULL, TEXT("Hello World"), TEXT("This is a C program"), MB_OK); return 0; }
按鈕類型:
MB_OK:只顯示“確定”按鈕
MB_OKCANCEL:顯示“確定”和“取消”按鈕
MB_ABORTRETRYIGNORE:顯示“中止”,“重試”和“忽略”按鈕
MB_YESNOCANCEL:顯示“是”,“否”和“取消”按鈕
MB_YESNO:顯示“是”和“否”按鈕
MB_RETRYCANCEL:顯示“重試”和“取消”按鈕
MB_CANCELTRYCONTINUE:顯示“取消”,“重試”和“繼續”按鈕
圖標類型:
MB_ICONHAND 為一個停在消息的圖標
MB_ICONERROR 也是一樣的
MB_ICONSTOP 也是一樣的
MB_ICONQUESTION 為一個問號的圖標
MB_ICONEXCLAMATION 為一個警告的圖標
MB_ICONWARNING 也是一樣的
MB_ICONASTERISK 為一個小寫 i 的圖標
MB_ICONINFORMATION 也是一樣的
默認按鈕:
MB_DEFBUTTON1 將第一個按鈕設置為默認按鈕
MB_DEFBUTTON2 將第二個按鈕設置為默認按鈕
MB_DEFBUTTON3 將第三個按鈕設置為默認按鈕
MB_DEFBUTTON4 將第四個按鈕設置為默認按鈕
消息框形態:
MB_APPLMODAL:在 hWnd 參數標識的窗口中繼續工作以前,用戶一定響應消息框,但是,用戶可以移動到其他線程的窗口且在這些窗口中工作,根據應用程序中窗口的層次機構,用戶則以移動到線程內的其他窗口,所有母消息框的子窗口自動地失效,但是彈出窗口不是這樣,MB_APPLMODAL 為默認選項
MB_SYSTEMMODAL:除了消息框有 WB_EX_TOPMOST 類型,否則 MB_APPLMODAL 和 MB_SYSTEMMODAL 一樣,用系統模態消息框來改變各種各樣的用戶,主要的損壞錯誤需要立即注意(例如,內存溢出),如果不是那些與 hWnd 聯系的窗口,此標志對用戶對窗口的相互聯系沒有影響
MB_TASKMODAL:如果參數 hWnd 為 NULL 的話,那么除了所有屬於當前線程高層次的窗口失效外,MB_TASKMODAL 和 MB_APPLMODAL 一樣,當調用應用程序或庫沒有一個可以得到的窗口句柄時,可以使用此標志,但仍需要阻止輸入到調用線程的其他窗口,而不是擱置其他線程
其它標志:
MB_HELP:添加“幫助”按鈕到消息框
MB_SETFOREGROUND:將消息框變為前景窗口,在內部系統為消息個調用 SetForegroundWindow 函數
MB_DEFAULT_DESKTOP_ONLY:窗口將顯示在最前面,接收輸入的當前桌面一定是一個默認桌面,否則函數調用失敗
MB_TOPMOST:消息框用 WS_EX_TOPMOST 窗口類型來創建 MB_SERVICE_NOTIFICATION
MB_RIGHT:文本將向右對齊
MB_RTLREADING:用在 Hebrew 和 Arabic 系統中從右到左的順序顯示消息和大寫文本
后話:
uType 中的選項如果使用多個的話,要用“|”運算符
#include <windows.h> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdLine) { MessageBox(NULL, TEXT("Hello World"), TEXT("This is a C program"), MB_YESNOCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2); return 0; }
運行結果