第一個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 ;
}

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