天天看點

win32之Hello World

第一個win32程式

WinMain函數

對于一個win32程式來說,WinMain函數是整個程式的入口函數,該函數的基本形式如下:
int CALLBACK WinMain(
  _In_  HINSTANCE hInstance,
  _In_  HINSTANCE hPrevInstance,
  _In_  LPSTR lpCmdLine,
  _In_  int nCmdShow
);

參數解析:
1.CALLBACK
    在VS中可以在CALLBACK上點選右鍵轉到定義,可以發現它的真面目其實是醬紫的,那麼__stdcall又有什麼含義呢?它其實是一個函數調用約定,确定一個程式如何實作一個函數調用及參數如何傳遞。有興趣的小夥伴可以自行百度了解。
    #define CALLBACK    __stdcall
    #define WINAPI      __stdcall
2.hInstance [in]
    類型:HINSTANCE
    應用程式目前執行個體句柄。
3.hPrevInstance [in]
    類型:HINSTANCE
    應用程式上一個執行個體句柄,這個參數總是為NULL。 
4.lpCmdLine [in]
    類型:LPSTR
    應用程式指令行參數。
5.mCmdShow [in]
    類型:int
    控制視窗的顯示類型,具體取值可檢視MSDN。
           

MessageBox函數

此函數建立,顯示和操作消息對話框。 消息對話框包含應用程式定義的消息和标題,以及預定義圖示和按鈕的任意組合。函數基本形式如下:
int MessageBox(
  HWND hWnd, 
  LPCTSTR lpText, 
  LPCTSTR lpCaption, 
  UINT uType
);

參數解析:
1.hWnd [in]
    類型:HWND
    消息對話框所屬視窗句柄,傳入NULL,表示消息框是獨立的。
2.lpText [in]
    類型:LPCTSTR
    消息對話框顯示的内容。
3.lpCaption [in]
    類型:LPCTSTR
    消息對話框的title,如果傳入NULL,則顯示default title(Error)
4.uType [in]
    類型:UINT
    指定一組标志位,用于确定對話框的内容和行為。常用的有
    MB_OK                 對話框包含一個OK button
    MB_OKCANCEL           對話框包含一個OK和一個CANCEL button
    MB_YESNO              對話框包含一個YES和一個NO button
    MB_YESNOCANCEL        對話框包含YES NO CANCEL三個buttons
    該參數還有很多取值,具體可檢視MSDN。

傳回值:
    int
    傳回按下按鈕的ID。
           

Hello World !

#include <windows.h>//win32程式必備頭檔案
#include <tchar.h>//_T(x)所在頭檔案

int WINAPI WinMain(HINSTANCE hInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
    int nShowCmd)
{
    int n = MessageBox(NULL, _T("Hello world!"), _T("first"), MB_OKCANCEL);//_T(x)的作用是編碼自适應。詳解将在下文UNICODE編碼中分析。
    return ;
}
           
win32之Hello World

windows應用程式開發學習的第一個程式,經典的Hello World !

繼續閱讀