windows程序設(shè)計08

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

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

15 積分

下載資源

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

資源描述:

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

1、單擊此處編輯母版標題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,*,第,4,章 鍵盤及鼠標的消息響應(yīng),董本志,主要內(nèi)容,鍵盤輸入的響應(yīng),鼠標消息的響應(yīng),鍵盤與鼠標的組合輸入,一、鍵盤輸入的響應(yīng),1,、程序?qū)嵗?2,、,Windows,程序是如何獲得鍵盤輸入的,鍵盤輸入以,消息,的形式傳遞給程序的窗口消息處理程序。,Windows,用八種不同的消息來傳遞不同的鍵盤事件。程序可以忽略其中至少一半的消息而不會有任何問題。并且,在大多數(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,中的鍵碼進行處理。,例,:,switch(,uMsg,),case WM_KEYDOWN:,switch(wParam,),case VK_LEFT:,/,動作;,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ù)中。此代碼標識按下或釋放的鍵。,(,2,),lParam,信息,在按鍵消息,WM_KEYDOWN,、,WM_KEYUP,中,,wParam,消息參數(shù)含有上面所討論的虛擬鍵碼,而,lParam,消息參數(shù)則含有對了解按鍵非常有用的其它信息。,lPara

4、m,的,32,位分為,6,個字段,如圖所示。,(,3,)切換鍵信息,在處理按鍵消息時,可能需要知道是否按下了轉(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,)消息順序,因為,TranslateMessage,函數(shù)從,WM_KEYDOWN,和,WM_SYSKEYDOWN,消息產(chǎn)生了字符消息,所以字符消息是夾在按鍵消息之間傳遞給窗口消息處理程序的。例如,如果,Caps Lock,未打開,而使用者按下再釋放,A,鍵,則窗口消息處理程序?qū)⒔邮盏饺缦卤硭镜娜齻€消息:,如果按下,Shift,鍵,再按下,A,鍵,然后釋放,A,鍵,再釋放,Shift,鍵,就會輸入大寫的,A,,而窗口消息

6、處理程序會接收到五個消息,如下表所示:,注意:,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,不是虛擬鍵碼。實際上,它是,ANSI,或,Unicode,字符代碼。例:,case WM_CHAR:,switch(wParam,),case a:,/,處理代碼;,break;,d

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

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

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

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

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

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

相關(guān)資源

更多
正為您匹配相似的精品文檔

相關(guān)搜索

關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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