游戲編程導論 Chapter-02_第1頁
游戲編程導論 Chapter-02_第2頁
游戲編程導論 Chapter-02_第3頁
游戲編程導論 Chapter-02_第4頁
游戲編程導論 Chapter-02_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第2章 了解Windows編程 內(nèi)容提綱 2.1 Visual C+編程方式2.2 Windows程序設計基本概念2.3 事件驅(qū)動及消息機制 2.3.1 Windows中的事件驅(qū)動 2.3.2 Windows 應用程序中常見消息2.4 Windows窗口的生成 2.4.1 指定窗口特征 2.4.2 注冊窗口類并創(chuàng)建窗口2.5 Windows程序創(chuàng)建及程序框架分析2.6 修改程序圖標和光標 第2章 了解Windows編程Windows編程實際上就在Windows框架下對Windows API的調(diào)用。Windows游戲編程對學習者的知識背景要求:具備基本的C+語言知識;對Windows程序的運行機

2、制和VC+的編程方式有一定了解。了解Visual C+ 2008集成開發(fā)環(huán)境的使用。2.1 Visual C+編程方式使用Visual C+編寫Windows程序可以有兩種方式:直接調(diào)用Windows API,游戲開發(fā)一般采用這種方式;應用程序中要完成某個功能,都是以函數(shù)調(diào)用的形式實現(xiàn)的;把僅使用Windows API來編寫Windows應用程序的開發(fā)方式叫做“SDK編程”。MFC(Microsoft Foundation Class Library,微軟基礎類庫)方式MFC是由Microsoft提供的對Windows API封裝后的類庫;用戶根據(jù)編程需要調(diào)用相應的類,或根據(jù)需要自定義有關的類

3、。2.2 Windows程序設計基本概念1. Windows數(shù)據(jù)類型微軟對一些C/C+的基本數(shù)據(jù)類型進行了封裝,定義了新的名稱。2. 窗口窗口是Windows程序的基本操作單元,是應用程序與用戶之間交互的接口環(huán)境,例如輸入輸出操作等等。窗口的特性是由一個WNDCLASS結構體進行定義的。一個完整的窗口具有許多特征,包括光標(鼠標進入該窗口時的形狀),圖標,菜單,背景色等。3. 實例指已加載到內(nèi)存中運行的程序,或者說可執(zhí)行程序運行后在內(nèi)存中的一個拷貝。4. 資源所有Windows的規(guī)范組件以及位圖等都可以是被程序所使用的資源,例如:菜單、圖標、對話框、菜單、按鈕等等。2.2 Windows程序設

4、計基本概念5. 對象與句柄對象可以是任何Windows的規(guī)范組件,例如窗口、菜單、按鈕、對話框或程序模塊等。句柄是指Windows使用的一個唯一的整數(shù)值,用于標識應用程序中不同的對象和同類對象中不同的實例。句柄又可以細分成: 圖標句柄(HICON)光標句柄(HCURSOR) 窗口句柄(HWND)應用程序?qū)嵗浔℉INSTANCE)其它常用句柄: HDC(當前設備環(huán)境句柄)HBITMAP(位圖句柄) HFONT(字體句柄)MENU(菜單句柄) HBRUSH(畫刷句柄)HPEN(畫筆句柄) HFILE(文件句柄)2.2 Windows程序設計基本概念6.圖形設備接口(Graphics Devic

5、e Interface,GDI)GDI負責系統(tǒng)與用戶或繪圖程序之間的信息交換,并且控制輸出設備上的圖形或者文字的顯示;使用GDI,程序員可以不需要考慮硬件設備操作的細節(jié);從Windows2000以后,GDI升級為GDI+;與GDI相比,GDI+不僅對其進行了優(yōu)化,而且還增加了許多新特性:漸變畫刷(Gradient Brushes)透明混合(Alpha Blending)多種圖片格式支持,包括BMP、GIF、JPEG、PNG、TIFF、ICON、WMF等格式。7. 回調(diào)函數(shù)回調(diào)函數(shù)是一個通過函數(shù)指針調(diào)用的函數(shù)?;卣{(diào)函數(shù)這種機制將函數(shù)的提供者和其實現(xiàn)者進行分離?;卣{(diào)函數(shù)一般用于消息截獲、系統(tǒng)信息獲

6、取或異步事件處理2.3 事件驅(qū)動及消息機制Windows程序以消息為基礎,以事件來驅(qū)動。Windows程序設計主要是圍繞事件處理、編寫消息響應函數(shù)。2.3.1 Windows中的事件驅(qū)動Windows程序中有一個消息循環(huán),用來接收消息和處理相應消息。消息處理函數(shù)有:GetMessage()函數(shù)從應用程序消息隊列中取走一條消息,該函數(shù)的原型如下:TranslateMessage()函數(shù)對取到的消息進行轉(zhuǎn)換:當用戶按下某個鍵,系統(tǒng)將發(fā)出WM_KEYDOWN、WM_KEYUP,并且參數(shù)中提供了該鍵的虛擬掃描碼。轉(zhuǎn)換過程不影響原來的消息,只會在消息隊列中增加新消息。DispatchMessage()函

7、數(shù)將取到的消息傳給窗口回調(diào)函數(shù)處理:該函數(shù)通知操作系統(tǒng)去調(diào)用窗口的回調(diào)函數(shù)來處理收到的消息。2.3 事件驅(qū)動及消息機制2.3.2 Windows 應用程序中常見消息標準Windows消息以WM_開頭。1. 鼠標消息WM_LBUTTONDOWN 按下鼠標左鍵 WM_MBUTTONDBLCLK 雙擊鼠標中鍵 WM_LBUTTONUP 釋放鼠標左鍵 WM_RBUTTONDOWN 按下鼠標右鍵 WM_LBUTTONDBLCLK 雙擊鼠標左鍵 WM_RBUTTONUP 釋放鼠標右鍵 WM_BUTTONDOWN 按下鼠標中鍵 WM_RBUTTONDBLCLK 雙擊鼠標右鍵 WM_MBUTTONUP 釋放鼠

8、標中鍵 WM_MOUSEMOVE 鼠標移動2.3 事件驅(qū)動及消息機制2. 虛擬碼與設備有關的鍵的標識稱之為掃描碼,而與設備無關的鍵的標識稱之為虛擬碼;虛擬碼由Windows系統(tǒng)定義,發(fā)送鍵盤消息時,其值就存放在wParam參數(shù)中,以標識哪一個鍵被按下或釋放。VK_LBUTTON 鼠標左鍵VK_RBUTTON 鼠標右鍵VK_MBUTTON 鼠標中鍵VK_LEFT 左箭頭鍵VK_RIGHT 右箭頭鍵VK_UP 上箭頭鍵VK_DOWN 下箭頭鍵VK_SPACE 空格鍵VK_RETURN 回車鍵VK_CONTROL Ctrl鍵VK_PAUSE Pause鍵VK_ESCAPE Esc鍵2.3 事件驅(qū)動及

9、消息機制3. 鍵盤消息鍵盤分成兩類,即按鍵消息和字符消息。當用戶按下或松開一個鍵時,就產(chǎn)生了一個按鍵消息。按鍵消息又可以分為系統(tǒng)按鍵消息和非系統(tǒng)按鍵消息。當一個按鍵的組合產(chǎn)生了一個可以顯示的字符時,就產(chǎn)生了一個字符消息。字符消息也可以分為系統(tǒng)字符消息以及非系統(tǒng)字符消息。2.3 事件驅(qū)動及消息機制4.其它消息1)WM_CLOSE:關閉窗口時產(chǎn)生的消息;2)WM_QUIT:退出程序關閉消息循環(huán)時產(chǎn)生的消息,該消息一般由PostQuitMessage函數(shù)發(fā)出;WM_PAINT:重畫消息當用戶區(qū)發(fā)生移動或顯示事件、用戶窗口改變大小事件或程序通過滾動條滾動窗口時,均產(chǎn)生一條WM_PAINT消息。此外,當

10、下拉式菜單關閉并需要恢復被覆蓋的部分以及Windows清除對話框或消息框等對象,并需要恢復被覆蓋的部分時,都將產(chǎn)生WM_PAINT消息;4)WM_CREATE:窗口在創(chuàng)建時發(fā)送的消息;5)WM_SETFOCUS:窗口獲得焦點時發(fā)送的消息;6)WM_KILLFOCUS:窗口失去焦點時發(fā)送的消息;7)WM_ACTIVE:窗口被激活時發(fā)送的消息;8)WM_DESTROY:關閉程序時發(fā)送的消息;WM_TIMER:定時器消息使用SetTimer設置定時器后,如果SetTimer函數(shù)的最后一個參數(shù)設為NULL,那么系統(tǒng)根據(jù)設置的時間間隔向程序的消息隊列發(fā)送WM_TIMER消息,直到使用KillTimer釋

11、放定時器為止。2.3 事件驅(qū)動及消息機制5. MSG結構體的定義消息數(shù)據(jù)是一個MSG結構體類型。MSG結構體的定義如下:typedef struct tagMSGHWNDhwnd;UINT message;WPARAM wParam;LPARAM lParam;DWORDtime;POINT pt; MSG;2.4 Windows窗口的生成2.4.1 指定窗口特征窗口特性由WNDCLASS結構體定義:typedef struct _WNDCLASS UINT style; /窗口類的樣式,一般設置為0WNDPROC lpfnWndProc; /指向窗口回調(diào)函數(shù)的函數(shù)指針int cbClsExt

12、ra; /分配在窗口類結構后的字節(jié)數(shù)int cbWndExtra; /分配在窗口實例后的字節(jié)數(shù)HINSTANCE hInstance; /定義窗口應用程序的實例句柄HICON hIcon; /窗口的圖標HCURSOR hCursor; /窗口的光標HBRUSH hbrBackground; /窗口的背景刷LPCWSTR lpszMenuName; /窗口的菜單名LPCWSTR lpszClassName; /窗口名 WNDCLASS; 2.4 Windows窗口的生成還有一個與WNDCLASS結構體類似的結構體:WNDCLASSEX,它是WNDCLASS結構體的擴展定義。它的定義如下:type

13、def struct UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm; WNDCLASSEX, *PWNDCLASSEX;2.4 Windows窗口的生成2.4.2 注冊窗口類并創(chuàng)建窗口RegisterClass()函數(shù)來注冊窗口CreateWindow()函數(shù)產(chǎn)生指定類型的窗口,其定義如下:HWND CreateWindow(LPCTSTR lpClassName, / 窗口名LPCTSTR lpWindowName,/ 窗口標題名稱DWORD dwStyle, / 窗口樣式int x, / 窗口左上角橫坐標int y, / 窗口左上角縱坐標int nWidth, / 窗口寬度int nHeight, / 窗口高度HWND hWndParent, / 該窗口的父窗口句柄HMENU hMenu, / 窗口

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論