MessageBoxA 函式 (winuser.h)
顯示包含系統圖示、一組按鈕和簡短應用程式特定訊息的強制回應對話方塊,例如狀態或錯誤資訊。 訊息方塊會傳回整數值,指出使用者按一下的按鈕。
語法
int MessageBoxA(
[in, optional] HWND hWnd,
[in, optional] LPCSTR lpText,
[in, optional] LPCSTR lpCaption,
[in] UINT uType
);
參數
[in, optional] hWnd
類型: HWND
要建立之訊息方塊之擁有者視窗的控制碼。 如果此參數為 Null,訊息方塊沒有擁有者視窗。
[in, optional] lpText
類型: LPCTSTR
要顯示的訊息。 如果字串包含一行以上,您可以使用每一行之間的歸位字元和/或換行字元分隔行。
[in, optional] lpCaption
類型: LPCTSTR
對話方塊標題。 如果此參數為 Null,則預設標題為 Error。
[in] uType
類型: UINT
對話方塊的內容和行為。 此參數可以是來自下列旗標群組的旗標組合。
若要指出訊息方塊中顯示的按鈕,請指定下列其中一個值。
值 | 意義 |
---|---|
|
訊息方塊包含三個按鈕: 中止、 重試和 忽略。 |
|
訊息方塊包含三個按鈕: 取消、 再試一次、 繼續。 使用此訊息方塊類型,而不是MB_ABORTRETRYIGNORE。 |
|
將 [說明 ] 按鈕新增至訊息方塊。 當使用者按一下 [ 說明 ] 按鈕或按下 F1 時,系統會將 WM_HELP 訊息傳送給擁有者。 |
|
訊息方塊包含一個按鈕: 確定。 此為預設值。 |
|
訊息方塊包含兩個按鈕: [確定 ] 和 [ 取消]。 |
|
訊息方塊包含兩個按鈕: 重試 和 取消。 |
|
訊息方塊包含兩個按鈕: 是 和 否。 |
|
訊息方塊包含三個按鈕: 是、 否和 取消。 |
若要在訊息方塊中顯示圖示,請指定下列其中一個值。
若要指出預設按鈕,請指定下列其中一個值。
若要指出對話方塊的型態,請指定下列其中一個值。
若要指定其他選項,請使用下列一或多個值。
值 | 意義 |
---|---|
|
與互動式視窗月臺的桌面相同。 如需詳細資訊,請參閱 視窗站台。
如果目前的輸入桌面不是預設桌面, 則 MessageBox 不會傳回,直到使用者切換至預設桌面為止。 |
|
文字靠右對齊。 |
|
在希伯來文和阿拉伯文系統上,使用由右至左讀取順序顯示訊息和標題文字。 |
|
訊息方塊會變成前景視窗。 在內部,系統會呼叫訊息方塊的 SetForegroundWindow 函式。 |
|
訊息方塊會以 視窗樣式WS_EX_TOPMOST 建立。 |
|
呼叫者是一個會通知使用者發生事件的服務。 函式會顯示目前使用中桌面上的訊息方塊,即使沒有使用者登入電腦也一樣。
終端機服務: 如果呼叫執行緒具有模擬權杖,函式會將訊息方塊導向模擬權杖中指定的會話。 如果設定此旗標, hWnd 參數必須是 Null。 如此一來,訊息方塊可以出現在桌面上,而不是對應至 hWnd的桌面。 如需有關使用此旗標的安全性考慮資訊,請參閱 互動式服務。 特別是請注意,此旗標可以在鎖定的桌面上產生互動式內容,因此應該只用于一組非常有限的案例,例如資源耗盡。 |
傳回值
類型: int
如果訊息方塊有[取消] 按鈕,如果按下 ESC 鍵或已選取 [取消]按鈕,函式就會傳回IDCANCEL值。 如果訊息方塊沒有 [取消 ] 按鈕,除非有MB_OK按鈕,否則按下 ESC 將不會有任何作用。 如果顯示MB_OK按鈕,且使用者按下 ESC 鍵,則傳回值會是 IDOK。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
如果函式成功,傳回值就是下列其中一個功能表項目值。
傳回碼/值 | 描述 |
---|---|
|
已選取 [中止 ] 按鈕。 |
|
已選取 [ 取消] 按鈕。 |
|
已選取 [ 繼續] 按鈕。 |
|
已選取 [忽略] 按鈕。 |
|
已選取 [無 ] 按鈕。 |
|
已選取 [ 確定] 按鈕。 |
|
已選取 [ 重試] 按鈕。 |
|
已選取 [再試] 按鈕。 |
|
已選取 [ 是 ] 按鈕。 |
備註
將 uType 參數設定為對應的旗標值,即可在訊息方塊中使用下列系統圖示。
圖示 | 標幟值 |
---|---|
MB_ICONHAND、 MB_ICONSTOP或 MB_ICONERROR | |
MB_ICONQUESTION | |
MB_ICONEXCLAMATION 或 MB_ICONWARNING | |
MB_ICONASTERISK 或 MB_ICONINFORMATION |
在 MessageBox 顯示字串的開頭,將兩個由 Unicode 格式化字元 U+200F 所代表的 RLM) (向左加上兩個標記,以便讓 MessageBox 的讀取順序轉譯為由右至左 (RTL) 。
當您使用系統強制回應訊息框來指出系統記憶體不足時, lpText 和 lpCaption 參數所指向的字串不應該從資源檔取得,因為嘗試載入資源可能會失敗。
如果您在對話方塊存在時建立訊息方塊,請使用對話方塊的控制碼作為 hWnd 參數。 hWnd參數不應該識別子視窗,例如對話方塊中的控制項。
範例
在下列範例中,應用程式會顯示訊息方塊,在發生錯誤狀況之後提示使用者輸入動作。 訊息方塊會顯示描述錯誤狀況以及如何解決的訊息。 MB_CANCELTRYCONTINUE樣式會指示MessageBox提供三個按鈕,讓使用者可以選擇如何繼續。 MB_DEFBUTTON2樣式會將預設焦點設定為訊息方塊的第二個按鈕,在此案例中為[再試]按鈕。
int DisplayResourceNAMessageBox()
{
int msgboxID = MessageBox(
NULL,
(LPCWSTR)L"Resource not available\nDo you want to try again?",
(LPCWSTR)L"Account Details",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
switch (msgboxID)
{
case IDCANCEL:
// TODO: add code
break;
case IDTRYAGAIN:
// TODO: add code
break;
case IDCONTINUE:
// TODO: add code
break;
}
return msgboxID;
}
下圖顯示上述程式碼範例的輸出:
如需另一個訊息方塊範例,請參閱 顯示訊息方塊。
注意
winuser.h 標頭會將 MessageBox 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程式碼,可能會導致編譯或執行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winuser.h (包含 Windows.h) |
程式庫 | User32.lib |
Dll | User32.dll |
API 集合 | ext-ms-win-ntuser-dialogbox-l1-1-0 (在 Windows 8) |
另請參閱
概念
其他資源
參考