函數(shù)功能:
MessageBox 函數(shù)用于顯示一個(gè)模態(tài)對(duì)話框毫炉,其中包含一個(gè)系統(tǒng)圖標(biāo)狸涌、 一組按鈕和一個(gè)簡(jiǎn)短的特定于應(yīng)用程序消息,如狀態(tài)或錯(cuò)誤的信息您旁。
消息框中返回一個(gè)整數(shù)值,該值指示用戶單擊了哪個(gè)按鈕印叁。
API 函數(shù)原型:
注釋:_In_ 說明該參數(shù)是輸入的被冒,_opt_ 說明該參數(shù)是可選參數(shù)。
int WINAPI MessageBox(
_In_opt_??HWND hWnd,
_In_opt_??LPCTSTR lpText,
_In_opt_??LPCTSTR lpCaption,
_In_? ?? ?UINT uType
);
參數(shù)解析:
參數(shù)含義
hWnd
1. 該消息框的父窗口句柄
2. 如果此參數(shù)為NULL轮蜕,則該消息框沒有擁有父窗口
lpText
消息框的內(nèi)容
lpCaption
消息框的標(biāo)題
uType
1. 指定一個(gè)決定對(duì)話框的內(nèi)容和行為的位標(biāo)志集
2. 此參數(shù)可以通過指定下列標(biāo)志或標(biāo)志的組合昨悼,來顯示消息框中的按鈕以及圖標(biāo)
uType參數(shù)定義解析
按鈕含義
MB_OK默認(rèn)值,有一個(gè)“確認(rèn)”按鈕在里面
MB_YESNO有“是”和“否”兩個(gè)按鈕在里面
MB_ABORTRETRYIGNORE有“中止”跃洛,“重試”和“跳過”三個(gè)按鈕在里面
MB_YESNOCANCEL有“是”率触,“否”和“取消”三個(gè)按鈕在里面
MB_RETRYCANCEL有“重試”和“取消”兩個(gè)按鈕在里面
MB_OKCANCEL有“確定”和“取消”兩個(gè)按鈕在里面
圖標(biāo)含義
MB_ICONEXCLAMATION一個(gè)驚嘆號(hào)出現(xiàn)在消息框:?
MB_ICONWARNING一個(gè)驚嘆號(hào)出現(xiàn)在消息框(同上)
MB_ICONINFORMATION一個(gè)圓圈中小寫字母i組成的圖標(biāo)出現(xiàn)在消息框:?
MB_ICONASTERISK一個(gè)圓圈中小寫字母i組成的圖標(biāo)出現(xiàn)在消息框(同上)
MB_ICONQUESTION一個(gè)問題標(biāo)記圖標(biāo)出現(xiàn)在消息框:?
MB_ICONSTOP一個(gè)停止消息圖標(biāo)出現(xiàn)在消息框:?
MB_ICONERROR一個(gè)停止消息圖標(biāo)出現(xiàn)在消息框(同上)
MB_ICONHAND一個(gè)停止消息圖標(biāo)出現(xiàn)在消息框(同上)
默認(rèn)按鈕含義
MB_DEFBUTTON1指定第一個(gè)按鈕為默認(rèn)按鈕
MB_DEFBUTTON2指定第二個(gè)按鈕為默認(rèn)按鈕
MB_DEFBUTTON3指定第三個(gè)按鈕為默認(rèn)按鈕
MB_DEFBUTTON4指定第四個(gè)按鈕為默認(rèn)按鈕
消息框形態(tài)含義
MB_APPLMODAL1. 在 hWnd 參數(shù)標(biāo)識(shí)的窗口中繼續(xù)工作以前,用戶一定響應(yīng)消息框
2. 但是汇竭,用戶可以移動(dòng)到其他線程的窗口且在這些窗口中工作
3. 根據(jù)應(yīng)用程序中窗口的層次機(jī)構(gòu)葱蝗,用戶則以移動(dòng)到線程內(nèi)的其他窗口
4. 所有母消息框的子窗口自動(dòng)地失效,但是彈出窗口不是這樣
5. 如果既沒有指定 MB_SYSTEMMODAL 也沒有指定 MB_TASKMODAL细燎,則 MB_APPLMODAL 為默認(rèn)的
MB_SYSTEMMODAL1. 除了消息框有 WB_EX_TOPMOST 類型两曼,否則 MB_APPLMODAL 和 MB_SYSTEMMODAL 一樣
2. 用系統(tǒng)模態(tài)消息框來改變各種各樣的用戶,主要的損壞錯(cuò)誤需要立即注意(例如玻驻,內(nèi)存溢出)
3. 如果不是那些與 hWnd 聯(lián)系的窗口悼凑,此標(biāo)志對(duì)用戶對(duì)窗口的相互聯(lián)系沒有影響
MB_TASKMODAL1. 如果參數(shù) hWnd 為 NULL 的話,那么除了所有屬于當(dāng)前線程高層次的窗口失效外璧瞬,MB_TASKMODAL 和 MB_APPLMODAL 一樣
2. 當(dāng)調(diào)用應(yīng)用程序或庫沒有一個(gè)可以得到的窗口句柄時(shí)户辫,可以使用此標(biāo)志,但仍需要阻止輸入到調(diào)用線程的其他窗口嗤锉,而不是擱置其他線程
其他標(biāo)志含義
MB_DEFAULT_DESKTOP_ONLY1. 接收輸入的當(dāng)前桌面一定是一個(gè)默認(rèn)桌面渔欢,否則函數(shù)調(diào)用失敗
2. 默認(rèn)桌面是一個(gè)在用戶已經(jīng)記錄且以后應(yīng)用程序在此上面運(yùn)行的桌面
MB_HELP1. 把一個(gè) Help 按鈕增加到消息框
2. 選擇 Help 按鈕或按 F1 產(chǎn)生一個(gè) Help 事件
MB_RIGHT文本為右對(duì)齊
MB_RTLREADING用在 Hebrew 和 Arabic 系統(tǒng)中從右到左的順序顯示消息和大寫文本
MB_SETFOREGROUND1. 消息框變?yōu)榍熬按翱?/p>
2. 在內(nèi)部系統(tǒng)為消息個(gè)調(diào)用 SetForegroundWindow 函數(shù)
MB_TOPMOST消息框用 WS_EX_TOPMOST 窗口類型來創(chuàng)建 MB_SERVICE_NOTIFICATION
返回值:
返回值含義
IDOK用戶按下了“確認(rèn)”按鈕
IDCANCEL用戶按下了“取消”按鈕
IDABORT用戶按下了“中止”按鈕
IDRETRY用戶按下了“重試”按鈕
IDIGNORE用戶按下了“忽略”按鈕
IDYES用戶按下了“是”按鈕
IDNO用戶按下了“否”按鈕
舉例:
#include
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
{
MessageBox(NULL, TEXT("這是我在魚C學(xué)的第一個(gè)程序!"), TEXT("打招呼"), MB_OKCANCEL | MB_ICONQUESTION | MB_DEFBUTTON2);
return 0;
}
學(xué)習(xí) Windows SDK 編程有什么好處瘟忱?
答:微軟每推出一個(gè)重要的 Windows 版本奥额,一般都會(huì)同時(shí)推出一個(gè) SDK(Software Development Kit)苫幢。SDK 包含了開發(fā)該 Windows 版本所需的 Windows 函數(shù)和常數(shù)定義、API 函數(shù)說明文檔垫挨、相關(guān)工具和示例态坦。SDK 編程一般使用 C 語言調(diào)用 API 實(shí)現(xiàn)開發(fā),因此也成為 Windows API 編程棒拂。