【正文】
ow( hwnd, nCmdShow) 。 //窗口類名為 窗口 33 // 以下進行窗口類的注冊 if(!RegisterClass( amp。 //窗口的最小化圖標為缺省圖標 =LoadCursor(NULL,IDC_ARROW) 。 //定義窗口處理函數(shù) =0。 char lpszClassName[] = 窗口 。本例的目的在于說明創(chuàng)建 Windows應用程序的方法及過程 include //包含應用程序中所需的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)的定義 LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM)。 default: return DefWindowProc(hwnd,message,wParam,lParam)。 } 將消息的虛擬鍵 轉(zhuǎn)換為字符信息 將消息傳送到 指定窗口函數(shù) 從消息隊列中讀取 一條消息,并將消 息放在 MSG結(jié)構(gòu)中 其中函數(shù) GetMessage形式為: GetMessage ( lpMSG, //指向 MSG結(jié)構(gòu)的指針 hwnd, nMsgFilteMin, //用于消息過濾的最小消息號值 nMsgFilterMax //用于消息過濾的最大消息號值 ) 返回零值,即檢索 到 WM_QUIT消息,程 序結(jié)束循環(huán)并退出 將消息傳遞給窗口函數(shù)的相應過程處理 消 息 隊 列 Windows將產(chǎn)生的消息 27 2. 窗口函數(shù) WinProc WinProc函數(shù)由一個或多個 switch語句組成。Msg,NULL,0,0)) { TranslateMessage(amp。應用程序調(diào)用 ShowWindow函數(shù)在屏幕上顯示窗口 ShowWindow(hwnd,nCmdshow); //nCmdshow為窗口顯示形式標識 S W _ HID E隱藏窗口S W _ S HO W N OR M A L 顯示并激活窗口S W _ S HO W M IN IM IZ E 顯示并最小化窗口S W _ S HO W M A X M IZ E 顯示并最大化窗口S W _ S HO W N OAC T I V E 顯示但不激活窗口S W _ R E S T OR E 恢復窗口的原來位置及尺寸顯示窗口后,應用程序調(diào)用 UpdateWindow更新并繪制用戶區(qū),并發(fā)出 WM_PAINT消息。窗口類的注冊由函數(shù)RegisterClass()實現(xiàn)。 18 2. 源程序組成結(jié)構(gòu) 入口函數(shù) WinMain 窗口函數(shù) WndProc Windows應用程序 構(gòu)成基 本框架 包含各種數(shù)據(jù)類型、數(shù)據(jù)結(jié)構(gòu)與函數(shù)等 1. 所有應用程序的入口,類似 Main函數(shù), 2. 完成一系列的定義和初始化,并產(chǎn)生消息循環(huán) WinMain和 WinProc是 Windows應用程序的主體 19 (1) WinMain函數(shù) 三個基本的組成部分 : 函數(shù)說明 、 初始化 和 消息循環(huán) 功能 注冊窗口類,建立窗口及執(zhí)行必要的初始化 進入消息循環(huán),據(jù)接受的消息調(diào)用相應的處理過程 當消息循環(huán)檢索到 WM_QUIT時終止程序運行 WinMain函數(shù) WinMain函數(shù)說明 WinMain函數(shù)的說明如下: int WINAPI WinMain ( HINSTANCE hThisInst, ∥ 應用程序當前實例句柄 HINSTANCe hPrevInst, ∥ 應用程序其他實例句柄 LPSTR lpszCmdLine, ∥ 指向程序命令行參數(shù)的指針 Int nCmdShow ∥ 應用程序開始執(zhí)行時窗口顯示方式的整數(shù)值標識 ) 注意! Win是多任務管理的,同一應用程序的多個窗口可能會同時存 ,Win系統(tǒng)對每個窗口的執(zhí)行稱為一個實例 ,并用一個實例句柄來唯一標識 20 (2) 初始化 (a)窗口類定義 通過給窗口類數(shù)據(jù)結(jié)構(gòu) WNDCLASS賦值完成 ,該數(shù)據(jù)結(jié)構(gòu)中包含窗口類的各種屬性。 3. WM_ CHAR: 按下一個 非系統(tǒng)鍵 時產(chǎn)生的消息 wParam 為按鍵的 ASCII碼 1Param 與 WM_KEYDOWN的相同 wParam:按下鍵的 虛擬鍵碼 ,用以標識按下或釋放的鍵 1Param:記錄了按鍵的重