名詞解釋
正如在C程式中的進入點是函式main一樣,Windows程式的進入點是WinMain,總是像這樣出現:
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,PSTRszCmdLine,intiCmdShow)
該進入點在 / Platform SDK / User Interface Services / Windowing / Windows / Window Reference / Window Functions中有說明。它在WINBASE.H中宣告如下:
intWINAPIWinMain(HINSTANCEhInstance,HINSTANCEhPrevInstance,LPSTRlpCmdLine,intnShowCmd);
第三個參數在WINBASE.H中定義為LPSTR,將它改為PSTR。這兩種資料型態都定義在WINNT.H中,作為指向字串的指標。LP字首代表「長指標」,這是16位元Windows下的產物。
WinMain宣告中改變了兩個參數的名稱。許多Windows程式中的變數名使用一種稱作「
匈牙利表示法」的命名系統,該系統在變數名稱前面增加了表示變數資料型態的短字首,字首i表示int、sz表示「以零結束的字串」。
舉例說明
WinMain函式宣告為返回一個int值。WINAPI識別字在WINDEF.H定義,語句如下:
#define WINAPI __stdcall
該語句指定了一個呼叫約定,包括如何生產機械碼以在堆疊中放置函式呼叫的參數。許多
Windows函式呼叫宣告為WINAPI。
WinMain的第一個參數被稱作「執行實體代號」。在Windows程式設計中,代號僅是一個套用程式用來識別某些東西的數字。在這種情況下,該代號唯一地標識該程式,還需要它在其他
Windows函式呼叫中作為參數。在Windows的早期版本中,當同時運行同一程式多次時,您便創建了該程式的「多個執行實體(multiple instances)」。同一套用程式的所有執行實體共用程式和唯讀的
記憶體(通常是例如功能表和
對話方塊模板的資源)。程式通過檢查hPrevInstance參數就能夠確定自身的其他執行實體是否正在運行。然後它可以略過一些繁雜的工作並從前面的執行實體將某些資料移到自己的資料區域。
使用方法
在32位元Windows版本中,該概念已被拋棄。傳給WinMain的第二個參數總是NULL(定義為0)。
WinMain的第三個參數是用於執行程式的命令列。某些Windows套用程式利用它在程式啟動時將檔案載入
記憶體。WinMain的第四個參數指出程式最初顯示的方式,可以是正常的或者是最大化地充滿整個畫面,或者是最小化顯示在工作列中。