键盘与鼠标响应.ppt

上传人:本田雅阁 文档编号:3180664 上传时间:2019-07-21 格式:PPT 页数:29 大小:141.02KB
返回 下载 相关 举报
键盘与鼠标响应.ppt_第1页
第1页 / 共29页
键盘与鼠标响应.ppt_第2页
第2页 / 共29页
键盘与鼠标响应.ppt_第3页
第3页 / 共29页
键盘与鼠标响应.ppt_第4页
第4页 / 共29页
键盘与鼠标响应.ppt_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《键盘与鼠标响应.ppt》由会员分享,可在线阅读,更多相关《键盘与鼠标响应.ppt(29页珍藏版)》请在三一文库上搜索。

1、键盘与鼠标响应,键盘响应 鼠标响应 键盘响应编程示例,键盘响应,窗口焦点 虚拟码,窗口焦点,键盘消息只有具有输入焦点的窗口才能接收到: 窗口函数通过获取以下消息确定窗口是否具有输入焦点: WM_SETFOCUS:窗口接收输入焦点 WM_KILLFOCUS:窗口失去输入焦点,虚拟码,扫描码:键盘上的键的唯一性标识。 虚拟码:与设备无关的键盘编码,其值存放在键盘消息的wParam,用以标识哪一个键被按下或释放。 设备驱动程序截取扫描码后,翻译成虚拟码,由应用程序处理。,常用虚拟码,VK_LBUTTON 鼠标左键 VK_MBUTTON 鼠标中键 VK_RBUTTON 鼠标右键 VK_SHIFT Sh

2、ift键 VK_MENU Alt键 VK_CAPITAL CapsLock键 VK_PRIOR PageUp键 VK_END End键 VK_LEFT 左箭头键 VK_UP 上箭头键 VK_0VK_9 09键,VK_BACK 退格键 VK_TAB 制表键 VK_RETURN 回车键 VK_CONTROL Ctrl键 VK_PAUSE Pause键 VK_ESCAPE Esc键 VK_NEXT PageDown键 VK_HOME Home键 VK_RIGHT 右箭头键 VK_DOWN 下箭头键 VK_AVK_Z AZ键,键盘消息,按键消息 系统按键消息 非系统按键消息 字符消息 系统字符消息 非

3、系统字符消息,按键消息,当用户按下或松开一个键时产生按键消息。 系统按键消息: 使用Alt键与相关输入键产生的消息。由windows系统内部直接处理,应用程序不必处理。 WM_SYSKEYDOWN 按下系统键 WM_SYSKEYUP 松开系统键,WM_KEYDOWN 按下非系统键 WM_KEYUP 松开非系统键,非系统按键消息: 不使用Alt键组合的按键消息,由应用程序处理,例如:Home,End,上、下、左、右移动键。,lParam表示的含义常用的有四位: 015位:重复计数位。当键一直被按着时,计算按键次数 29位:标识该键是否与Alt键一同被按下。 30位:标识键的先前状态 31位:标识

4、键被按下还是被松开。,按键消息的wParam包含了识别按下的键的虚拟码。,字符消息,当一个按键的组合(按下键松开键附加字符消息)是一个可显示的字符时,就产生了一个字符消息。 非系统字符消息 函数TranslateMessage处理WM_KEYDOWN产生的消息) WM_CHAR 非系统字符 WM_DEADCHAR 非系统死字符 系统字符消息 函数TranslateMessage处理WM_SYSKEYDOWN产生的消息 WM_SYSCHAR 系统字符 WM_SYSDEADCHAR 系统死字符 死字符:本身不能显示但是能修改其他字符显示的字符,鼠标响应,加载光标: HCURSOR hCursor1

5、; hCursor1LoadCursor( hInstance,/应用程序当前实例句柄 IDC_ARROW/系统光标 ) SetCursor(hCursor1);,系统预定义的光标,IDC_ARROW 箭头光标 IDC_CROSS 十字光标 IDC_IBEAM I形光标 IDC_ICON 空图标 IDC_SIZEALL IDC_SIZENESW IDC_SIZENS IDC_SIZENWSE IDC_SIZEWE 方向箭头光标 IDC_UPARROW 垂直箭头光标 IDC_WAIT 计时光标,鼠标消息,lParam LOWORD(lParam) 光标X坐标 HIWORD(lParam) 光标Y

6、坐标 窗口左上角为原点,向右为正,向下为正。 wParam 描述虚键状态,常用来检测Shift和Ctrl键是否按下 MK_CONTROL 按下Ctrl键 MK_LBUTTON 按下鼠标左键 MK_MBUTTON 按下鼠标中键 MK_RBUTTON 按下鼠标右键 MK_SHIFT 按下Shift键,例如: Case WM_LBUTTONDOWN: if(wParam,鼠标双击,使窗口函数能接受到鼠标双击的消息: 第一步,定义窗口类: wndclass.style=CS_DBLCLKS; 第二步,接受鼠标双击消息: case WM_LBUTTONDBLCLK: case WM_MBUTTONDBL

7、CLK: case WM_RBUTTONDBLCLK;,捕获鼠标,SetCapture(hwnd); 不管鼠标光标处于何处(包括窗口外),窗口都能接收到鼠标消息,同时系统功能键失效,而且其他窗口都得不到鼠标消息。 ReleaseCapture(); 释放鼠标,其它窗口可正常接受鼠标消息。,键盘响应编程示例,#define X 5 /每行5个字符 #define Y (4+1) /每页显示4行 long WINAPI WndProc(HWND hWnd,UINT iMessage, UINT wParam,LONG lParam) static char charbufXY; static in

8、t 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,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 P

9、AINTSTRUCT ps; int i; HDC hdc;,switch(iMessage) case WM_SETFOCUS: /设置输入焦点 CreateCaret(hWnd,0,0,15); SetCaretPos(nXCharn, nYCharn); ShowCaret(hWnd); break; case WM_KILLFOCUS:/取消输入焦点 DestroyCaret(); break;,case WM_CHAR:/响应字符消息 if(n=Y-1) MessageBox(hWnd,“缓冲器已满”,NULL,MB_OK); break; if(wParam=VK_BACK)/响应

10、回退消息 if(nArrayPosn=0) if(n=0) MessageBox(hWnd,“不能回退“, NULL,MB_OK); else /消去一行 n-; ,else /消去行中字符 for(i=nArrayPosn;inNumCharn;i+) / charbufni=charbufni+1; nArrayPosn-; nNumCharn-; hdc=GetDC(hWnd); GetCharWidth32(hdc,charbufnnArrayPosn, charbufnnArrayPosn, ,if(nNumCharn=X-1)/该行已满,换一行 if(nY-1) PostMessa

11、ge(hWnd,WM_CHAR,VK_RETURN,0); if(wParam=VK_RETURN)/处理回车键,换一行显示 n+; if(nY-1) nXCharn=0; nYCharn=sizen-1.cy*n; InvalidateRect(hWnd,NULL,0); break; ,for(i=nNumCharn;inArrayPosn;i-) /键入一个有效字符 / charbufni=charbufni-1; charbufni=(unsigned char)wParam; nArrayPosn+; nNumCharn+; hdc=GetDC(hWnd); GetCharWidth

12、32(hdc,(UINT)wParam,(UINT)wParam, ,case WM_KEYDOWN: switch(wParam) case VK_HOME: /处理HOME键消息 home=1; /光标位置移到0位 nAddTextNotAtEnd=1; InvalidateRect(hWnd,NULL,0); break; case VK_END: /处理END键消息 nArrayPosn=nNumCharn; hdc=GetDC(hWnd); nXCharn=sizen.cx; InvalidateRect(hWnd,NULL,0); ReleaseDC(hWnd,hdc); break; ,case WM_PAINT: hdc=BeginPaint(hWnd,case WM_DESTROY: PostQuitMessage(0); break; default: /其他消息处理程序 return(DefWindowProc(hWnd,iMessage,wParam,lParam) ; return wParam; ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1