鍵盤與鼠標響應_第1頁
鍵盤與鼠標響應_第2頁
鍵盤與鼠標響應_第3頁
鍵盤與鼠標響應_第4頁
鍵盤與鼠標響應_第5頁
已閱讀5頁,還剩24頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、鍵盤與鼠標響應鍵盤響應鼠標響應鍵盤響應編程示例鍵盤響應窗口焦點虛擬碼窗口焦點鍵盤消息只有具有輸入焦點的窗口才能接收到:窗口函數通過獲取以下消息確定窗口是否具有輸入焦點:WM_SETFOCUS:窗口接收輸入焦點WM_KILLFOCUS:窗口失去輸入焦點虛擬碼掃描碼:鍵盤上的鍵的唯一性標識。虛擬碼:與設備無關的鍵盤編碼,其值存放在鍵盤消息的wParam,用以標識哪一個鍵被按下或釋放。設備驅動程序截取掃描碼后,翻譯成虛擬碼,由應用程序處理。常用虛擬碼VK_LBUTTON鼠標左鍵VK_MBUTTON鼠標中鍵VK_RBUTTON鼠標右鍵VK_SHIFTShift鍵VK_MENUAlt鍵VK_CAPITA

2、LCapsLock鍵VK_PRIORPageUp鍵VK_ENDEnd鍵VK_LEFT左箭頭鍵VK_UP上箭頭鍵VK_0VK_909鍵VK_BACK退格鍵VK_TAB制表鍵VK_RETURN回車鍵VK_CONTROLCtrl鍵VK_PAUSEPause鍵VK_ESCAPEEsc鍵VK_NEXTPageDown鍵VK_HOMEHome鍵VK_RIGHT右箭頭鍵VK_DOWN下箭頭鍵VK_AVK_ZAZ鍵鍵盤消息按鍵消息系統按鍵消息非系統按鍵消息字符消息系統字符消息非系統字符消息按鍵消息當用戶按下或松開一個鍵時產生按鍵消息。系統按鍵消息:使用Alt鍵與相關輸入鍵產生的消息。由windows系統內部直

3、接處理,應用程序不必處理。WM_SYSKEYDOWN按下系統鍵WM_SYSKEYUP松開系統鍵WM_KEYDOWN按下非系統鍵WM_KEYUP松開非系統鍵非系統按鍵消息:不使用Alt鍵組合的按鍵消息,由應用程序處理,例如:Home,End,上、下、左、右移動鍵。lParam表示的含義常用的有四位:015位:重復計數位。當鍵一直被按著時,計算按鍵次數29位:標識該鍵是否與Alt鍵一同被按下。30位:標識鍵的先前狀態31位:標識鍵被按下還是被松開。按鍵消息的wParam包含了識別按下的鍵的虛擬碼。字符消息當一個按鍵的組合(按下鍵松開鍵附加字符消息)是一個可顯示的字符時,就產生了一個字符消息。非系統

4、字符消息函數TranslateMessage處理WM_KEYDOWN產生的消息)WM_CHAR非系統字符WM_DEADCHAR非系統死字符系統字符消息函數TranslateMessage處理WM_SYSKEYDOWN產生的消息WM_SYSCHAR系統字符WM_SYSDEADCHAR系統死字符死字符:本身不能顯示但是能修改其他字符顯示的字符鼠標響應加載光標:HCURSOR hCursor1;hCursor1LoadCursor(hInstance,/應用程序當前實例句柄IDC_ARROW/系統光標)SetCursor(hCursor1);系統預定義的光標IDC_ARROW箭頭光標IDC_CROS

5、S十字光標IDC_IBEAMI形光標IDC_ICON空圖標IDC_SIZEALLIDC_SIZENESWIDC_SIZENSIDC_SIZENWSEIDC_SIZEWE方向箭頭光標IDC_UPARROW垂直箭頭光標IDC_WAIT計時光標鼠標消息lParamLOWORD(lParam) 光標X坐標HIWORD(lParam) 光標Y坐標窗口左上角為原點,向右為正,向下為正。wParam描述虛鍵狀態,常用來檢測Shift和Ctrl鍵是否按下MK_CONTROL按下Ctrl鍵MK_LBUTTON按下鼠標左鍵MK_MBUTTON按下鼠標中鍵MK_RBUTTON按下鼠標右鍵MK_SHIFT按下Shif

6、t鍵例如:Case WM_LBUTTONDOWN:if(wParam&MK_CONTROL)/檢測Ctrl鍵是否按下break;鼠標雙擊使窗口函數能接受到鼠標雙擊的消息:第一步,定義窗口類:wndclass.style=CS_DBLCLKS;第二步,接受鼠標雙擊消息:case WM_LBUTTONDBLCLK:case WM_MBUTTONDBLCLK:case WM_RBUTTONDBLCLK;捕獲鼠標SetCapture(hwnd);不管鼠標光標處于何處(包括窗口外),窗口都能接收到鼠標消息,同時系統功能鍵失效,而且其他窗口都得不到鼠標消息。ReleaseCapture();釋放鼠

7、標,其它窗口可正常接受鼠標消息。鍵盤響應編程示例#define X 5/每行5個字符#define Y (4+1)/每頁顯示4行long WINAPI WndProc(HWND hWnd,UINT iMessage,UINT wParam,LONG lParam)static char charbufXY;static int nArrayPosY=0,0,0,0,0;static int nXCharY=0,0,0,0,0;static int nYCharY=0,0,0,0,0;static int nNumCharY=0,0,0,0,0;static int nTextStartXY=0

8、,0,0,0,0;static int nTextStartYY=0,0,0,0,0;static SIZE sizeY;static int n=0;static int home;static int nAddTextNotAtEnd;static int nCharWidth=0;static PAINTSTRUCT ps;int i;HDC hdc;switch(iMessage) case WM_SETFOCUS: CreateCaret(hWnd,0,0,15); SetCaretPos(nXCharn, nYCharn); ShowCaret(hWnd); break;case

9、WM_KILLFOCUS:DestroyCaret();break;case WM_CHAR:if(n=Y-1)MessageBox(hWnd,“緩沖器已滿”,NULL,MB_OK);break;if(wParam=VK_BACK)if(nArrayPosn=0)if(n=0)MessageBox(hWnd,“不能回退“,NULL,MB_OK);elsen-;elsefor(i=nArrayPosn;inNumCharn;i+)charbufni=charbufni+1;nArrayPosn-;nNumCharn-;hdc=GetDC(hWnd);GetCharWidth32(hdc,char

10、bufnnArrayPosn,charbufnnArrayPosn,&nCharWidth);nXCharn=nXCharn-nCharWidth;ReleaseDC(hWnd,hdc);InvalidateRect(hWnd,NULL,1);break;if(nNumCharn=X-1)if(nY-1)PostMessage(hWnd,WM_CHAR,VK_RETURN,0);if(wParam=VK_RETURN)n+;if(nnArrayPosn;i-)charbufni=charbufni-1;charbufni=(unsigned char)wParam;nArrayPosn

11、+;nNumCharn+;hdc=GetDC(hWnd);GetCharWidth32(hdc,(UINT)wParam,(UINT)wParam,&nCharWidth);nXCharn=nXCharn+nCharWidth;ReleaseDC(hWnd,hdc);InvalidateRect(hWnd,NULL,0);break;case WM_KEYDOWN:switch(wParam)case VK_HOME:home=1;nAddTextNotAtEnd=1;InvalidateRect(hWnd,NULL,0);break;case VK_END:nArrayPosn=nN

12、umCharn;hdc=GetDC(hWnd);nXCharn=sizen.cx;InvalidateRect(hWnd,NULL,0);ReleaseDC(hWnd,hdc);break;case WM_PAINT:hdc=BeginPaint(hWnd,&ps);HideCaret(hWnd);if(home)SetCaretPos(nTextStartX0,nTextStartY0);home=0;elseSetCaretPos(nXCharn+nTextStartXn,nYCharn+nTextStartYn);ShowCaret(hWnd);for(i=0;i=n;i+)GetTextExtentPoint32(hdc,charbufn,nNumCharn,&sizen);TextOut(hdc,nTextStartXi,

溫馨提示

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

評論

0/150

提交評論