深入研究MessageBox
(1)MessageBox(NULL,TEXT("世界你好"),TEXT("問好"),MB_OK);
第一個參數暫時不講;第二個是正文;第三個是標題(Caption);第四個是類型。
MB_OK就是表示有一個OK按鈕【確定】)
TEXT是一個宏,當字符串中有中文的時候最好用TEXT來包圍這個字符串,雖然不使用TEXT在VC6中沒問題,但是在VC7中有問題,而且微軟也建議使用TEXT宏,因此在涉及到中文的場合要使用它。他的作用就是把中文轉化成不會亂碼的格式。(暫時這麼認爲)。_T("問好"),其實_T只是TEXT的一個縮寫而已。而且_T在有的低版本里不識別。TEXT()低版本也識別。暫時不用關心TEXT的細節。
換個樣子:
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),MB_OKCANCEL);
可從設置希望在對話框中顯示的按鈕:
#define MB_OK 0x00000000L
#define MB_OKCANCEL 0x00000001L
#define MB_ABORTRETRYIGNORE 0x00000002L
#define MB_YESNOCANCEL 0x00000003L
#define MB_YESNO 0x00000004L
#define MB_RETRYCANCEL 0x00000005L
也可以設置對話框中顯示的圖標:
#define MB_ICONHAND 0x00000010L
#define MB_ICONQUESTION 0x00000020L
#define MB_ICONEXCLAMATION 0x00000030L
#define MB_ICONASTERISK 0x00000040L
比如:MessageBox(NULL, TEXT("世界你好") ,TEXT("你好"), MB_ICONQUESTION);
(2)可是如果我想顯示“確定、取消”按鈕的時候同時使用問號圖標呢?
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),MB_OKCANCEL| MB_ICONQUESTION);
MessageBox(NULL, TEXT("世界你好"), TEXT("你好"),
MB_ABORTRETRYIGNORE | MB_ICONEXCLAMATION);
(3)思考:
“|”是什麼意思?“|”是位運算裏的“或”運算,只有對應的兩個二進位有一位爲1時,結果位才爲1 ,否則爲0。MB_OK、MB_OKCANCEL等的低四位不同,但是高位永遠爲0;MB_ICONHAND、MB_ICONQUESTION等的低5至第8位不同,而其他位永遠爲0。這樣“MB_OK、MB_OKCANCEL”組的數值與“MB_ICONHAND、MB_ICONQUESTION”組的數值進行或運算後能分別保留各自的部分,也就是在結果值中同時體現兩組的取值。
這種風格叫“掩碼”,在Windows編程中這種用法會經常用到。
(4)返回值
MessageBox是有返回值的,返回值爲用戶點擊的按鈕:
#define IDOK 1
#define IDCANCEL 2
#define IDABORT 3
#define IDRETRY 4
#define IDIGNORE 5
#define IDYES 6
#define IDNO 7
代碼:
int ret = MessageBox(NULL, TEXT("你是人嗎?"), TEXT("火星人"),
MB_YESNO | MB_ICONQUESTION);
if(ret==IDYES)
{
MessageBox(NULL, TEXT("火星人你好"), TEXT("問好"),MB_OK);
}
else
{
MessageBox(NULL, TEXT("歡迎回家來"), TEXT("問好"),MB_OK);
}