第一個C程式

來源:互聯網
上載者:User

(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 ;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.