键盘与鼠标响应.ppt

上传人:牧羊曲112 文档编号:5881282 上传时间:2023-08-29 格式:PPT 页数:29 大小:336.32KB
返回 下载 相关 举报
键盘与鼠标响应.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_SHIFTShift键VK_MENUAlt键

2、VK_CAPITALCapsLock键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键与相关输入键产生的消息

3、。由windows系统内部直接处理,应用程序不必处理。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);,系统预定义的

5、光标,IDC_ARROW箭头光标IDC_CROSS十字光标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_RBU

6、TTON按下鼠标右键MK_SHIFT按下Shift键,例如:Case WM_LBUTTONDOWN:if(wParam,鼠标双击,使窗口函数能接受到鼠标双击的消息:第一步,定义窗口类: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,0,0

8、,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);else/消去一行n-;,else/消去行中字符for(i=nArrayPosn;inNumCharn;i+)/.charbufni=charbufni+1;nArrayPosn-;nNumCharn-;hd

10、c=GetDC(hWnd);GetCharWidth32(hdc,charbufnnArrayPosn,charbufnnArrayPosn,if(nNumCharn=X-1)/该行已满,换一行if(nY-1)PostMessage(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-)/键入一个有效字符/.charbu

11、fni=charbufni-1;charbufni=(unsigned char)wParam;nArrayPosn+;nNumCharn+;hdc=GetDC(hWnd);GetCharWidth32(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备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号