2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、網(wǎng)絡游戲開發(fā)語言基礎——Windows程序設計,第2章 Windows消息機制,第2章 Windows消息機制,Windows菜單鍵盤輸入獲取鼠標輸入獲取定時器,鍵盤輸入獲取鼠標輸入獲取,鼠標輸入獲取,熟悉Windows菜單掌握鍵盤輸入獲取掌握鼠標輸入獲取熟悉定時器,第2章 Windows消息機制,2.1 Windows菜單2.1.1 菜單編輯器,在VC中可以使用菜單編輯器,非常直觀地設計菜單。,第2章 Windo

2、ws消息機制,2.1 Windows菜單2.1.1 菜單編輯器,每個菜單項都有自己的屬性,可以在屬性窗口中編輯。,第2章 Windows消息機制,2.1 Windows菜單2.1.1 菜單編輯器,菜單項標題“顯示(&S)”中的“(&S)”表示熱鍵為“S”鍵?!癆lt”鍵和菜單項后面字符的按鍵組合就可以激活該菜單項。,ID是菜單的標識符,程序通過引用此標識符辨別菜單項。菜單項的名稱一般遵循如下規(guī)律:,ID_1級

3、標識符_2級標識符_ …… n級菜單標識,第2章 Windows消息機制,2.1 Windows菜單2.1.2 實現(xiàn)菜單消息1. 加載菜單,在進行Windows程序設計中,加載菜單的方法有以下3種:,wndClass.lpszMenuName = MAKEINTRESOURCE(IDR_NEW_MENU);,在窗口類中加載,在創(chuàng)建窗口時加載菜單,HMENU hMenu;hMenu=LoadMenu(hInstance,MA

4、KEINTRESOURCE(IDR_NEW_MENU));hwnd = CreateWindow (szAppName,“菜單示例”,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT, CW_USEDEFAULT,CW_USEDEFAULT,NULL,hMenu,hInstance,NULL) ;,第2章 Windows消息機制,2.1 Window

5、s菜單2.1.2 實現(xiàn)菜單消息1. 加載菜單,HMENU hMenu;hMenu = CreateMenu(VOID);,動態(tài)加載菜單,創(chuàng)建空菜單:,BOOL AppendMenu(HMENU hMenu, UINT uFlags, UINT uIDNewltem, LPCTSTR lpNewltem);,在菜單尾部添加菜單項:,第2章 Windows消息機制,2.1 Windows菜單2.1.2 實現(xiàn)菜

6、單消息1. 加載菜單,BOOL InsertMenu(HMENU hMenu,UINT uPosition,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem);,動態(tài)加載菜單,插入菜單項:,BOOL DeleteMenu(HMENU hMenu,UINT uPosition,UINT uFlags);,刪除菜單項:,第2章 Windows消息機制,2.1 Windows菜單

7、2.1.2 實現(xiàn)菜單消息1. 加載菜單,BOOL ModifyMenu(HMENU hMenu,UINT uPosition,UINT uFlags,UINT uIDNewltem,LPCTSTR lpNewltem);,動態(tài)加載菜單,修改菜單項:,BOOL EnableMenuItem(HMENU hMenu,UINT uIDEnableItem,UINT uEnable);,禁止或激活菜單項:,第2章 Win

8、dows消息機制,2.1 Windows菜單2.1.2 實現(xiàn)菜單消息2. 響應菜單消息,wmId = LOWORD(wParam);//菜單ID wmEvent = HIWORD(wParam); //菜單事件,菜單消息的參數(shù)wParam中保存著兩個信息:一個是菜單的ID,另一個是菜單所發(fā)生的事件,比如有菜單單擊事件,菜單顯示事件等。,根據(jù)菜單ID,可以進入不同的消息處理。,第2章 Windows消息機制,2.1

9、 Windows菜單2.1.2 實現(xiàn)菜單消息2. 響應菜單消息,case WM_COMMAND:wmId = LOWORD(wParam); wmEvent = HIWORD(wParam); // Parse the menu selections:switch (wmId){case IDM_EXIT: DestroyWindow(hWnd); break;default:

10、 return DefWindowProc(hWnd, message, wParam, lParam);},菜單的窗口消息為WM_COMMAND,消息處理函數(shù)中處理不同的菜單事件。,第2章 Windows消息機制,2.2 鍵盤輸入獲取2.2.1 鍵盤基礎,鍵盤和鼠標是用戶的標準輸入設備。鍵盤的輸入信息也是以消息的方式提供給程序處理的。Windows用8種不同的消息來傳遞不同的鍵盤事件。,接收鍵盤事件的窗口具有輸入焦點,有輸入

11、焦點的窗口是活動窗口或活動窗口的衍生窗口(活動窗口的子窗口,或者活動窗口子窗口的子窗口等)。,第2章 Windows消息機制,2.2 鍵盤輸入獲取2.2.1 鍵盤基礎,鍵盤消息可以分為兩類,字符消息和按鍵消息。,字符消息,按下鍵盤上的一個字符,按鍵按下時會產生字符消息(WM_CHAR)。在消息的wParam中,存儲對應的的字符的值,case WM_CHAR:switch(wParam) {case 65:case 9

12、7:MessageBox(hWnd, "AA", "字符消息", MB_OK);break;,第2章 Windows消息機制,2.2 鍵盤輸入獲取2.2.1 鍵盤基礎,鍵盤消息可以分為兩類,字符消息和按鍵消息。,按鍵消息,WM_KEYDOWN按下鍵盤上的鍵WM_KEYUP松開鍵盤上的鍵,第2章 Windows消息機制,2.2 鍵盤輸入獲取2.2.1 鍵盤基礎,在獲取

13、按鍵消息時,需要明確按下的鍵,這個信息是由參數(shù)wParam提供的。在Windows系統(tǒng)中這個信息稱為虛擬鍵碼。,第2章 Windows消息機制,2.2 鍵盤輸入獲取2.2.1 鍵盤基礎,字母和數(shù)字鍵沒有對應的虛擬鍵碼,可以用字符消息來處理。,第2章 Windows消息機制,2.2 鍵盤輸入獲取2.2.2 實現(xiàn)鍵盤消息,case WM_KEYDOWN:switch(wParam) {case VK_LEFT:

14、MessageBox(hWnd, "←←", "按鍵消息", MB_OK);break;case VK_RIGHT:MessageBox(hWnd, "→→", "按鍵消息", MB_OK);break;,第2章 Windows消息機制,2.3 鼠標輸入獲取2.3.1 鼠標基礎,現(xiàn)在大多數(shù)軟件已把三鍵鼠標的輸入作為標準輸

15、入方式。對三鍵鼠標來說,3個鍵分別稱為左鍵、中鍵、右鍵。在Windows頭文件中定義的與鼠標有關的標識符使用縮寫LBUTTON、MBUTTON和RBUTTON。雙鍵鼠標只有左鍵與右鍵,單鍵鼠標只有一個左鍵。,鼠標操作,單擊,雙擊,拖動,第2章 Windows消息機制,2.3 鼠標輸入獲取2.3.1 鼠標基礎,當在程序的窗口中按下或釋放鼠標時,會收到對應的消息。,第2章 Windows消息機制,2.3 鼠標輸入獲取2.3.1

16、 鼠標基礎,鼠標消息的lParam記錄了鼠標的位置信息。,x = LOWORD (lParam) ;y = HIWORD (lParam) ;,低8位存儲了x坐標信息,高8位存儲了y坐標信息。,在這里,坐標信息是相對于屏幕坐標系的絕對坐標系。,第2章 Windows消息機制,2.3 鼠標輸入獲取2.3.1 鼠標基礎,wParam的值指示鼠標按鍵以及“Shift”和“Ctrl”鍵的狀態(tài)??梢允褂妙^文件WINUSER.H中定義的位屏

17、蔽來測試wParam。MK前綴代表鼠標按鍵。相應的位有值,說明對應的按鍵處于按下狀態(tài)。,第2章 Windows消息機制,2.3 鼠標輸入獲取2.3.1 鼠標基礎,當把鼠標移過窗口的顯示區(qū)域時,Windows會為鼠標產生WM_MOUSEMOVE消息。,鼠標移動消息,鼠標滾輪會產生WM_MOUSEWHEEL消息。這個消息中l(wèi)Param為鼠標的位置,wParam的低字組包含一系列的標志位,用于表示鼠標按鍵、“Shift”與“Ctrl”

18、鍵的狀態(tài)。wParam的高字組中有一個“delta”值,該值目前可以是“120”或“-120”,這取決于滑輪的向前轉動還是向后轉動。,鼠標滾輪消息,第2章 Windows消息機制,2.3 鼠標輸入獲取2.3.2 實現(xiàn)鼠標消息,鼠標消息主要是要處理單擊和移動消息。,case WM_LBUTTONUP:nX = LOWORD (lParam);nY = HIWORD (lParam);break;case WM_MOU

19、SEMOVE:nX = LOWORD (lParam);nY = HIWORD (lParam);g_MovePos.nX = nX;g_MovePos.nY = nY;break;,第2章 Windows消息機制,2.4 定時器,在Windows系統(tǒng)里可以把定時器看作是一種輸入設備。它周期性地在每經過一個指定的時間間隔后就通知應用程序一次。這個通知是用WM_TIMER消息的形式完成的。,設置定時器,首先需要創(chuàng)建一

20、個定時器。,UINT_PTR SetTimer(          HWND hWnd,// 窗口句柄    UINT_PTR nIDEvent,// 事件ID    UINT uElapse,//

21、 時間間隔    TIMERPROC lpTimerFunc// 回調函數(shù));,第2章 Windows消息機制,2.4 定時器,關閉定時器,可以通過函數(shù)KillTimer關閉定時器。,BOOL KillTimer(      HWND hWnd,  //定時器對應的窗口句柄 

22、;  UINT_PTR uIDEvent );//定時器的ID,在一個窗口中,可同時定義多個定時器。,第2章 Windows消息機制,2.4 定時器,case WM_CREATE:SetTimer(hWnd, 1, 1000, NULL);break;case WM_TIMER:nTime++;::InvalidateRect(hWnd, NULL, true);break;

23、case WM_DESTROY:KillTimer(hWnd, 1);PostQuitMessage(0);break;,第2章 Windows消息機制,小結(理論課),本節(jié)主要介紹Windows消息機制Windows菜單獲取鍵盤輸入獲取鼠標輸入定時器,第2章 Windows消息機制,小測驗(題目部分),選擇題(單選題)1.在按下“A“鍵并釋放后,下列哪一個消息不會出現(xiàn)?( )A.WM_KEYUP

24、B.WM_KEYDOWNC.WM_CHARD.WM_CREATE2.在下列哪個鼠標消息中,參數(shù)所帶的信息會與別的消息不同? ( )A. WM_LBUTTONUPB. WM_MBUTTONDBLCLKC. WM_MOUSEMOVED. WM_MOUSEWHEEL判斷題3.引發(fā)菜單消息的惟一方法是單擊菜單項。( ),第2章 Windows消息機制,小測驗(答案部分),

25、選擇題(單選題)1.在按下“A”鍵并釋放后,下列哪一個消息不會出現(xiàn)?( D )A.WM_KEYUPB.WM_KEYDOWNC.WM_CHARD.WM_CREATE2.在下列哪個鼠標消息中,參數(shù)所帶的信息會與別的消息不同? ( D )A. WM_LBUTTONUPB. WM_MBUTTONDBLCLKC. WM_MOUSEMOVED. WM_MOUSEWHEEL判

26、斷題3.引發(fā)菜單消息的惟一方法是單擊菜單項。( F ),第2章 Windows消息機制,課后作業(yè),【作業(yè)1】創(chuàng)建Windows窗口菜單,【作業(yè)2】創(chuàng)建Windows窗口,顯示按下的鍵盤的鍵和鼠標位置,思路分析:創(chuàng)建Windows窗口,在菜單編輯器中編輯菜單,并加載到窗口之中。,思路分析:根據(jù)鍵盤消息用MessageBox函數(shù)輸出鍵盤的鍵,根據(jù)鼠標消息用MessageBox函數(shù)輸出鼠標當前的x、y坐標,第2章 Windows消息機制,

溫馨提示

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

評論

0/150

提交評論