windows程序設(shè)計(jì)08

上傳人:dfg****19 文檔編號(hào):248164001 上傳時(shí)間:2024-10-22 格式:PPT 頁(yè)數(shù):17 大小:83KB
收藏 版權(quán)申訴 舉報(bào) 下載
windows程序設(shè)計(jì)08_第1頁(yè)
第1頁(yè) / 共17頁(yè)
windows程序設(shè)計(jì)08_第2頁(yè)
第2頁(yè) / 共17頁(yè)
windows程序設(shè)計(jì)08_第3頁(yè)
第3頁(yè) / 共17頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《windows程序設(shè)計(jì)08》由會(huì)員分享,可在線閱讀,更多相關(guān)《windows程序設(shè)計(jì)08(17頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級(jí),第三級(jí),第四級(jí),第五級(jí),*,*,*,第,4,章 鍵盤及鼠標(biāo)的消息響應(yīng),董本志,主要內(nèi)容,鍵盤輸入的響應(yīng),鼠標(biāo)消息的響應(yīng),鍵盤與鼠標(biāo)的組合輸入,一、鍵盤輸入的響應(yīng),1,、程序?qū)嵗?2,、,Windows,程序是如何獲得鍵盤輸入的,鍵盤輸入以,消息,的形式傳遞給程序的窗口消息處理程序。,Windows,用八種不同的消息來傳遞不同的鍵盤事件。程序可以忽略其中至少一半的消息而不會(huì)有任何問題。并且,在大多數(shù)情況下,這些消息中包含的鍵盤信息會(huì)多于程序所需要的。處理鍵盤的部分工作就是識(shí)別出哪些消息是重要的,哪些是不重要的。,3,、鍵盤消息,3.1

2、WM_KEYDOWN,和,WM_KEYUP,LRESULT CALLBACK,WindowProc,(HWND,hwnd,/handle to window,UINT,uMsg,/WM_KEYDOWN WM_KEYUP,WPARAM,wParam,/virtual-key code VK_F1,LPARAM,lParam,/key data,);,消息的處理過程主要是根據(jù),wParam,中的鍵碼進(jìn)行處理。,例,:,switch(,uMsg,),case WM_KEYDOWN:,switch(wParam,),case VK_LEFT:,/,動(dòng)作;,return 0,;,VK_LEFT 25 L

3、EFT ARROW key,VK_UP 26 UP ARROW key,VK_RIGHT 27 RIGHT ARROW key,VK_DOWN 28 DOWN ARROW key,(,1,)虛擬鍵碼的定義,虛擬鍵碼保存在,WM_KEYDOWN,、,WM_KEYUP,、,WM_SYSKEYDOWN,和,WM_SYSKEYUP,消息的,wParam,參數(shù)中。此代碼標(biāo)識(shí)按下或釋放的鍵。,(,2,),lParam,信息,在按鍵消息,WM_KEYDOWN,、,WM_KEYUP,中,,wParam,消息參數(shù)含有上面所討論的虛擬鍵碼,而,lParam,消息參數(shù)則含有對(duì)了解按鍵非常有用的其它信息。,lPara

4、m,的,32,位分為,6,個(gè)字段,如圖所示。,(,3,)切換鍵信息,在處理按鍵消息時(shí),可能需要知道是否按下了轉(zhuǎn)換鍵(,Shift,、,Ctrl,和,Alt,)或開關(guān)鍵(,Caps Lock,、,Num Lock,和,Scroll Lock,)。通過調(diào)用,GetKeyState,函數(shù),就能獲得此信息。,SHORT,GetKeyState,(,int,nVirtKey,);,/virtual-key code,nVirtKey,VK_SHIFT shift,鍵,VK_CONTROL CTRL,鍵,VK_MENU ALT,鍵,VK_CAPITAL,CapsLock,鍵,VK_LSHIFT,左,shi

5、ft,鍵,VK_RSHIFT,右,shift,鍵,VK_LCONTROL,VK_RCONTROL,VK_LMENU,VK_RMENU,3.2,字符消息,WM_CHAR,(,1,)消息順序,因?yàn)?TranslateMessage,函數(shù)從,WM_KEYDOWN,和,WM_SYSKEYDOWN,消息產(chǎn)生了字符消息,所以字符消息是夾在按鍵消息之間傳遞給窗口消息處理程序的。例如,如果,Caps Lock,未打開,而使用者按下再釋放,A,鍵,則窗口消息處理程序?qū)⒔邮盏饺缦卤硭镜娜齻€(gè)消息:,如果按下,Shift,鍵,再按下,A,鍵,然后釋放,A,鍵,再釋放,Shift,鍵,就會(huì)輸入大寫的,A,,而窗口消息

6、處理程序會(huì)接收到五個(gè)消息,如下表所示:,注意:,Shift,鍵本身不產(chǎn)生字符消息。,(,2,),WM_CHAR,消息,LRESULT CALLBACK,WindowProc,(HWND,hwnd,/handle to window,UINT,uMsg,/WM_CHAR,WPARAM,wParam,/character code(TCHAR),LPARAM,lParam,/key data,);,參數(shù),wParam,不是虛擬鍵碼。實(shí)際上,它是,ANSI,或,Unicode,字符代碼。例:,case WM_CHAR:,switch(wParam,),case a:,/,處理代碼;,break;,d

7、efault:,return 0;,二、鼠標(biāo)輸入的響應(yīng),當(dāng),Windows,使用者移動(dòng)鼠標(biāo)時(shí),,Windows,在顯示器上移動(dòng)一個(gè)稱為鼠標(biāo)光標(biāo)的小位圖。鼠標(biāo)光標(biāo)有一個(gè)指向顯示器上精確位置的單圖素?zé)狳c(diǎn)。當(dāng)提到鼠標(biāo)光標(biāo)在屏幕上的位置時(shí),指的是熱點(diǎn)的位置。,Windows,支持幾種預(yù)先定義的鼠標(biāo)光標(biāo),程序可以使用這些光標(biāo)。,IDC_ARROW,的斜箭頭(在,WINUSER.H,中定義)。熱點(diǎn)在箭頭的頂端。,IDC_CROSS,光標(biāo)(在本章后面的,BLOKOUT,程序中有用到)的熱點(diǎn)在十字交叉線的中心。,IDC_WAIT,光標(biāo)是一個(gè)沙漏,通常用于指示程序正在執(zhí)行。,程序員也可以設(shè)計(jì)自己的光標(biāo)。,wnd

8、class.hCursor,=,LoadCursor,(NULL,IDC_ARROW);,下面是一些描述鼠標(biāo)按鍵動(dòng)作的術(shù)語(yǔ):,Clicking,按下并放開一個(gè)鼠標(biāo)按鍵。,Double-clicking,快速按下并放開鼠標(biāo)按鍵兩次。,Dragging,按住鼠標(biāo)按鍵并移動(dòng)鼠標(biāo)。,對(duì)三鍵鼠標(biāo)來說,三個(gè)鍵分別稱為左鍵、中鍵、右鍵。在,Windows,表頭文件中定義的與鼠標(biāo)有關(guān)的標(biāo)識(shí)符使用縮寫,LBUTTON,、,MBUTTON,和,RBUTTON,。雙鍵鼠標(biāo)只有左鍵與右鍵,單鍵鼠標(biāo)只有一個(gè)左鍵,。,2.1,、顯示區(qū)域鼠標(biāo)消息,當(dāng)鼠標(biāo)移過窗口的顯示區(qū)域時(shí),窗口消息處理程序收到,WM_MOUSEMOVE,

9、消息。當(dāng)在窗口的顯示區(qū)域中按下或者釋放一個(gè)鼠標(biāo)按鍵時(shí),窗口消息處理程序會(huì)接收到下面這些消息:,對(duì)于所有這些消息來說,其,lParam,值均含有鼠標(biāo)的位置:低字節(jié)為,x,坐標(biāo),高字節(jié)為,y,坐標(biāo),這兩個(gè)坐標(biāo)是相對(duì)于窗口顯示區(qū)域左上角的位置。您可以用,LOWORD,和,HIWORD,宏來提取這些值:,x=LOWORD(,lParam,);y=HIWORD(,lParam,);,wParam,的值指示鼠標(biāo)按鍵以及,Shift,和,Ctrl,鍵的狀態(tài)。,例如,如果收到了,WM_LBUTTONDOWN,消息,而且值,wparam,&MK_SHIFT,是,TRUE,(非,0,),就知道當(dāng)左鍵按下時(shí)也按下了

10、,Shift,鍵。,鼠標(biāo)消息響應(yīng)實(shí)例:,switch(message),case WM_LBUTTONDOWN:,/,處理程序,return 0;,case WM_MOUSEMOVE:,if(,wParam,&MK_LBUTTON)/,左鍵按下同時(shí)移動(dòng)鼠標(biāo),/,處理程序,return 0;,case WM_LBUTTONUP:,/,處理程序,return 0;,鼠標(biāo)雙擊消息,雙擊鼠標(biāo)按鍵是指在短時(shí)間內(nèi)單擊兩次。要確定為雙擊,則這兩次單擊必須發(fā)生在其相距的實(shí)際位置十分接近的狀況下(內(nèi)定范圍是一個(gè)平均系統(tǒng)字體字符的寬,半個(gè)字符的高),并且發(fā)生在指定的時(shí)間間隔(稱為雙擊速度)內(nèi)。您可以在控制臺(tái)中改變

11、時(shí)間間隔。,如果希望您的窗口消息處理程序能夠收到雙按鍵的鼠標(biāo)消息,那么在調(diào)用,RegisterClass,初始化窗口類別結(jié)構(gòu)時(shí),必須在窗口風(fēng)格中包含,CS_DBLCLKS,標(biāo)識(shí)符:,wndclass.style,=CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS;,如果在窗口風(fēng)格中未包含,CS_DBLCLKS,,而使用者在短時(shí)間內(nèi)雙擊了鼠標(biāo)按鍵,那么窗口消息處理程序會(huì)接收到下面這些消息:,WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDOWN,WM_LBUTTONUP,鼠標(biāo)雙擊消息,如果您的窗口類別風(fēng)格中包含了,CS_DBLCLKS,,那么雙擊時(shí)窗口消息處理程序?qū)⑹盏饺缦孪ⅲ?WM_LBUTTONDOWN,WM_LBUTTONUP,WM_LBUTTONDBLCLK,WM_LBUTTONUP,WM_LBUTTONDBLCLK,消息簡(jiǎn)單地替換了第二個(gè),WM_LBUTTONDOWN,消息。,

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

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!