天天看點

WinMain()函數

原型:int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)

參數:第一個參數hInstance是唯一辨別本程式的執行個體句柄,系統和其他應用程式通過該句柄與本程式通信。

      第二個參數hPrevInstance是本程式的前一個執行個體句柄,由于32為Windows采用程序——線程模式,每個線程擁有自己的句柄,是以該參數始終為空。

      第三個參數lpCmdLine是一個字元串指針,隻想指令行參數字元串,沒有指令行參數時為空。

      第四個參數nCmdShow之命程式最初運作時視窗打開方式,如正常方式、最大化或最小化運作。

WinMain()函數傳回一個整數值作為退出代碼。

APIENTRY辨別函數調用約定。當該函數被調用時,其參數按從左至右的順序壓入棧,再由調用者将參數彈出棧。

WinMain()函數在程式執行過程中,完成以下具體工作:

(1)定義一個視窗類。包括定義視窗對象并對其相關成員指派。

(2)注冊視窗類。調用函數RegisterClass()注冊視窗類,并判斷是否注冊成功。其參數是WNDCLASS結構類型指針,用需要注冊的視窗對象位址進行調用。

(3)建立視窗。定義注冊視窗後,可以建立一個或多個同類型的視窗:由API函數Createwindow()建立視窗,并傳回所建立視窗的句柄。

(4)調用API函數showWindow()和UpdateWindow()顯示并更新視窗。他們的參數相同,第1個參數是要顯示的視窗句柄,第2個參數是視窗顯示的方式。

(5)程式運作的準備工作完成,進入消息循環。函數GetMessage()從應用程式消息隊列中讀取消息,函數TranslateMessage()進行鍵盤消息轉換,然後由函數DispatchMessage()将消息派送給響應的視窗函數進行處理。當消息隊列為空時,應用程式進入等待狀态,等待使用者輸入。當函數GetMessage()擷取到WM_QUIT消息時,傳回FLASE,結束消息循環。