Windows应用程序组成及编程步骤
Windows應用程序組成及編程步驟:
1、應用程序的組成:
一個完整的Windows應用程序通常由五種類型的文件組成
1.C語言源程序文件
2.頭文件
3.模塊定義文件
4.資源描述文件
5.項目文件
2、源程序組成結構:
1.所有應用程序的入口,類似main函數
2.完成一系列的定義和初始化,并產生消息循環
Windows應用程序-> 入口函數WinMain,窗口函數WndProc->構成基本框架->
包含多種數據類型、數據結構與函數等。
/*WinMain和WndProc是Windows應用程序的主體*/
(1)WinMain函數
1.基本組成部分:函數說明、初始化和消息循環
2.功能:注冊窗口類,建立窗口及執行必要的初始化
進入消息循環,具接受的消息調用相應的處理過程
當消息循環檢索到WM_QUIT時終止程序
3.WinMain函數說明
1 int WINAPI WinMain
2 (
3 HINSTANCE hThisInst,//應用程序當前實例句柄
4 HINSTANCE hPrevInst,//應用程序其他實例句柄
5 LPSTR lpszCmdLine,//指向程序命令行參數的指針
6 int nCmdShow //應用程序開始執行時窗口顯示方式的整數值標識
7 )
8 {
9 return 0;
10 }
注意!Windows是多任務管理的,同一應用程序的多個窗口可能會同時存在,
Windows系統對每個窗口的執行稱為一個實例,并用一個實例句柄來唯一標識
(2)初始化
窗口類的定義:定義窗口類的形式與功能->LoadIcon/LoadCursor/GetStockObject
窗口類的注冊:窗口類必須先注冊后使用->RegisterClass
創建窗口實例:CreatWindow
顯示窗口:ShowWindow,UpdateWindow
(a)窗口類定義
通過給窗口類數據結構WNDCLASS賦值完成,該數據結構中包含窗口類的各種
屬性。窗口類定義常用以下函數:
LoadIcon的作用是在應用程序中加載一個窗口圖標。其原型為:
HICON LoadIcon(HINSTANCE hInstance,LPCTSTR IpIconName)
第一個參數:圖標資源所在的模塊句柄,NULL則使用系統預定義圖標
第二個參數:圖標資源名或系統預定義圖標標識名
//窗口類定義 wndclass.style = 0; //窗口類型為缺省類型 wndclass.IpfnWndProc = WndProc; //定義窗口過程函數 wndclass.cbClsExtra = 0; //窗口類無拓展 wndclass.cbWndExtra = 0; //窗口實例無拓展 wndclass.hInstance = hinstance; //當前實例句柄 wndclass.hIcon = LocadIcon(NULL,IDI_APPLICATION);//窗口的最小化圖標為缺省圖標 wndclass.hCursor = LocadCursor(NULL,IDC_ARROW);//窗口采用箭頭光標 wndclass.hbrBackground = GetStockObject(WHITE_BRUSH);//窗口背景為白色 wndclass.IpszMenuName = NULL;//窗口中無菜單 wndclass.IpszClassName = IpszClassName;//窗口類名為"窗口"
LoadCursor的作用是在應用程序中加載一個窗口光標
HCURSOR LoadCursor(HINSTANCE hInstance,LPCTSTR lpCursorName)
第一個參數:光標資源所在的模塊句柄,NULL則使用系統預定義圖標
第二個參數:光標資源名或系統預定義圖標標識名
應用程序調用函數GetStockObject獲取系統提供的背景刷
HBRUSH GetStockObject(int nBrush);
(b)注冊窗口類
Windows系統本身提供部分預定義的窗口類,程序員也可以自定義窗口類,
窗口類必須先注冊后使用。窗口了的注冊由函數
RegisterClass()實現。
RegisterClass(&wndclass);//wndclass為窗口類結構
RegisterClass函數返回為布爾值,注冊成功則返回真
(c)創建窗口實例
創建一個窗口類的實例由函數CreateWindow()實現
函數原型如下:
HWND CreateWindow ( LPCTSTR lpszClassName, //窗口類名 LPCTSTR lpszTitle, //窗口標題名 DWORD dwStyle, //創建窗口的樣式 int x,y, //窗口左上角坐標 int nWidth,nHeight, //窗口寬度和高度 HWND hwndParent, //該窗口的父窗口句柄 HMENU hMenu, //窗口主菜單句柄 HINSTACNCE hInstcane, //創建窗口的應用程序當前句柄 LPVOID lpParam //指向一個傳遞給窗口的參數值的指針 )
(d)顯示窗口
窗口類的顯示由ShowWindow和UpdateWindow函數實現。應用程序調用
ShowWindow函數在屏幕上顯示窗口
ShowWindow(hwnd,nCmdshow);//nCmdshow為窗口顯示形式標識
SW_HIDE 隱藏窗口
SW_SHOWNORMAL 顯示并激活窗口
SW_SHOWMINIMIZE 顯示并最小化窗口
SW_SHOWMAXMIZE 顯示并最大化窗口
SW_SHOWNOACTIVE 顯示但不激活窗口
SW_RESTORE 恢復窗口的原來位置及尺寸
顯示窗口后,應用程序調用UpdateWindow更新并繪制用戶區,
并發出WM_PAINT消息。
UpdateWindow(hwnd);
(3)消息循環
Windows將產生的消息在WinMain函數中傳給窗口函數的相應過程處理
從消息隊列中讀取一條消息,并將消息放在MSG結構體中
消息循環的常見格式如下:
1 MSG Msg;
2 …
3 while (GetMessage (&Msg,NULL,0,0))
4 {
5 TranslateMessage(&Msg);//將消息的虛擬鍵轉換為字符信息
6 DispatchMessage(&Msg); //將消息傳送到指定窗口函數
7 }
其中函數GetMessage形式為:
(返回零值,即檢索到WM_QUIT消息,程序結束循環并退出)
1 GetMessage 2 (lpMSG, //指向MSG結構的指針 3 hwnd, 4 nMsgFilteMin, //用于消息過濾的最小消息號值 5 nMsgFilterMax //用于消息過濾的最大消息號值 6 )
總結
以上是生活随笔為你收集整理的Windows应用程序组成及编程步骤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常见到的特殊字符
- 下一篇: 邬江兴院士:工业互联网安全&拟态