天天看點

第一個視窗程式

#include<windows.h>
int WINAPI WinMain(HINSTANCE hInstance,  //應用程式目前執行個體的句柄。
				   HINSTANCE hPrevInstance,//win16留下的廢物現在已經不用了
				   LPSTR lpCmdLine,//指令行參數
				   int nCmdShow)//主視窗初始化時的顯示方式
{
	::MessageBox(NULL, L"hello word", L"first", MB_OKCANCEL);
	/*
	int WINAPI MessageBox(
   HWND    hWnd,  此參數代表消息框擁有的視窗。如果為NULL,則消息框沒有擁有視窗。
   LPCTSTR lpText, 消息框的内容。如果使用了Unicode庫,則把文本變成L""或者TEXT(""):
   LPCTSTR lpCaption,消息框的标題。如果使用了Unicode庫,則把文本變成L""或者TEXT(""):
   UINT    uType  指定一個決定對話框的内容和行為的位标志集。
     此參數可以為下列标志組中标志的組合。指定下列标志中的一個來顯示消息框中的按鈕以及圖示。
    );
   */
	return 0;
}
           

此程式會彈出一個簡單的消息框顯示hello world。其中WinMain函數相當于以前的main函數(入口函數)。

#define WINAPI__stdcall

WINAPI 的意思是_stdcall 調用方式

他的意思的:

1、進行函數調用,函數參數的入棧方式是最右邊先入棧。 2、同時__stdcall規定,被調函數負責棧的回收(調用者隻負責壓棧). 題外話:__pascal的調用規則是從左到右,正好與__stdcall相反。