API Windows 程序至少需要兩個函數
一個是WinMain() 一個是消息處理函數WindowProc()
這兩個函數是並列關係 都是有windows負責調用
WinMain()
WinMain()函數有四個形參,以及一個int返回類型
int WINAPI WinMain ( HINSTANCE hInstance, HINSTANCE hPreInstance, LPSTR lpCmdLine, int nCmdShow );
返回類型int後面有一個WINAPI函數說明符,將使系統以一種特殊的方式處理函數名和實參第一個參數 hInstance 是一個句柄, 指向正在運行的程序的句柄
第二個參數 hPreInstance 在32位系統已經完全失去意義
第三個參數 lpCmdLine 是指向某個字符串的指針,包含啓動程序的命令行字符
第四個參數 nCmdShow 決定被創建窗口的外觀. 可以是正常,最小化,或是其他. 數值由一系列 SW_開頭的字符常量定義
WinMain()函數的功能有4個:
1.告訴windows要創建的窗口的種類
2.創建程序窗口
3.初始化程序窗口
4.獲取屬於該程序的windows消息
指定窗口種類
windows 定義了 WNDCLASSEX 的struct 類型來定義窗口類型
其結構如下:
struct WNDCLASSEX { UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm; };
創建窗口:
1.註冊窗口 RegisterClassEX( &WindowClass ); 或者調用 RegisterClass( &WindowClass );
2.創建窗口 CreateWindow() 可以添加一些窗口的附加屬性
3.ShowWindow( hWnd, nCmdShow ) 第二個參數是WinMain()的第四個實參,指示屏幕上顯示窗口的形式HWND hWnd; //定義一個窗口句柄
還有一個CreateWindowEx() 函數 可以以擴充樣式信息創建窗口hWnd = CreateWindow( szAppName, //窗口類的名稱 " The Window Name ", //窗口的標題欄顯示的字符串 WS_ , //窗口樣式, CW_ , //窗口左上角座標的x值 CW_ , //窗口左上角座標的y值 CW_ , //窗口寬度 CW_ , //窗口高度 0, //父窗口句柄 0, //菜單 hInstance, //當前程序實例的句柄 0 //窗口創建數據, 當設計MDI(多文檔界面, multiple-document interface)時會用到 );