深入研究MessageBox

深入研究MessageBox

1MessageBox(NULL,TEXT("世界你好"),TEXT("問好"),MB_OK);

    第一個參數暫時不講;第二個是正文;第三個是標題(Caption);第四個是類型。

   MB_OK就是表示有一個OK按鈕【確定】)

TEXT是一個宏,當字符串中有中文的時候最好用TEXT來包圍這個字符串,雖然不使用TEXTVC6中沒問題,但是在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 ,否則爲0MB_OK、MB_OKCANCEL等的低四位不同,但是高位永遠爲0;MB_ICONHANDMB_ICONQUESTION等的低5至第8位不同,而其他位永遠爲0。這樣“MB_OK、MB_OKCANCEL”組的數值與“MB_ICONHANDMB_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);

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章