(1)MessageBox(NULL,TEXT("世界你好"),TEXT("問好"),MB_OK);
第一個參數暫時不講;第二個是本文;第三個是標題(Caption);第四個是類型。
MB_OK就是表示有一個OK按鈕【確定】)
TEXT是一個宏,當字串中有中文的時候最好用TEXT來包圍這個字串,雖然不使用TEXT在VC6中沒問題,但是在VC7中有問題,而且微軟也建議使用TEXT宏,因此在涉及到中文的場合要使用它。他的作用就是把中文轉化成不會亂碼的格式。(暫時這麼認為)。_T("問好"),其實_T只是TEXT的一個縮寫而已。而且_T在有的低版本裡不識別。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 | define MB_ICONEXCLAMATION);
拿到1000010以後怎麼判斷是不是和0000010或運算來的?
1000010
0000010 與&
======
0000010
1000011
0000010 &
=======
0000010
這種風格叫“掩碼”,在Windows編程中這種用法會經常用到。
大家想像一下MessageBox的內部實現是怎麼樣的?
if((mode& MB_OK)== MB_OK)
{
//顯示OK按鈕
}
if((mode&
MB_ICONQUESTION)== MB_ICONQUESTION)
{
//顯示問好
}
itoa、atoi定義在stdlib.h中。
(4)預設按鈕
為什麼要有預設按鈕:一個方便使用者,不用思考,直接點斷行符號就可以選擇預設按鈕;防止使用者誤操作,預設的按鈕應該是最優選的按鈕。“是否儲存檔案?”預設應該是“確定”,“是否發射飛彈?”預設應該是“取消”。
還可以指定哪個按鈕是預設按鈕,猜一下這些選項的取值的特徵是什嗎?
#define
MB_DEFBUTTON1
0x00000000L#define
MB_DEFBUTTON2
0x00000100L#define
MB_DEFBUTTON3
0x00000200L#define
MB_DEFBUTTON4
0x00000300L範例程式碼:
MessageBox(NULL, TEXT("你是人嗎?"), TEXT("火星人"), MB_YESNO | MB_ICONQUESTION| MB_DEFBUTTON2);
(5)傳回值
MessageBox是有傳回值的,傳回值為使用者點擊的按鈕:
#define IDOK
1
#define IDCANCEL
2
#define IDABORT
3
#define IDRETRY
4
#define IDIGNORE
5
#define IDYES
6
#define IDNO
最後就來貼代碼:
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
//hInstance程式的執行個體控制代碼 ,hPrevInstance永遠為空白
int i=0;
while(i<5)
{
MessageBox(NULL,TEXT("message"),TEXT("title"),MB_OK);
i++;
}
i=MessageBox(NULL,TEXT("你是天才嗎?") ,TEXT("天才的抉擇"),MB_YESNO);
if(i==IDYES)
{
MessageBox(NULL,TEXT("真的嗎?"),TEXT("SURE"),MB_YESNO|MB_ICONHAND);
}
else
{
i=0;
while(i<10)
{
MessageBox(NULL,TEXT("我來幫你磨練吧") ,TEXT("天才訓練"),MB_OK);
++i;
}
}
return 0 ;
}