欢迎来到天天文库
浏览记录
ID:57059739
大小:189.00 KB
页数:36页
时间:2020-07-30
《Visual C++面向对象与可视化程序设计06_vc_KB_mouse课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第5讲Windows应用程序中的键盘与鼠标扫描码是依赖于具体设备的,为达到设备无关性的要求,往往使用与具体设备无关的虚拟码,虚拟码是由Windows系统定义的与设备无关的键的标识由于键盘的输入产生一条消息扫描码、虚拟码以及其他与击键有关的消息设备驱动程序截取键的扫描码翻译虚拟码它含键盘上的键对应一个唯一的标识值(扫描码)按下或释放某键时产生取出键盘消息进行处理消息设备驱动程序把消息放到系统的消息队列中Windows从系统消息队列中取出消息发送到相应的线程消息队列中窗口过程6.1键盘在应用程序中的应用虚拟码是一种与设备无关的键盘编码,它的值存放在键盘消息的wParam参数中,用
2、以标识哪一个键被按下或释放,最常用的虚拟码已经在Windows.h中定义,操作系统在接收到键盘输入后把消息发送给具有“输入焦点(inputfocus)的窗口应用程序一般有几个窗口,但当按下某一个键时,只有一个窗口能接收到该键盘消息,接收这个键盘消息的窗口称为有“输入焦点”的窗口有“输入焦点”的窗口应是活动窗口或者活动窗口的子窗口窗口正在接收输入焦点窗口函数通过捕获WM_SETFOCUS和WM_KILLFOCUS消息确定当前窗口是否具有输入焦点。窗口失去输入焦点键盘消息按键消息字符消息按下或松开一个键时就产生了一按键消息一个按键的组合产生了一个可以显示的字符时,就产生了一个字符
3、消息系统按键消息非系统按键消息Alt键与相关输入键的组合产生的消息,这些键一般由Windows系统内部直接处理,应用程序不处理若应用程序处理了这些系统键消息,还要调用DefWindowsProc()函数,以便不影响系统对它们的处理不使用Alt键组合的的按键消息按键消息的两个变量wParamlParam32位的变量重复计数位(0~15位)OEM扫描码(16~23位)扩展键标志(24位)保留位(25~28位)关联码(29位)键的先前状态(位30)转换状态(31位)包含了识别按下的键的虚键码在WinMain函数的消息循环中包含了TranslateMessage函数,其功能是把按键消
4、息转化为字符消息,但只有当键盘驱动程序把键盘字符映射成ASCII码后才能产生WM_CHAR消息字符消息系统非系统WM_KEYDOWN和WM_KEYUP的按键消息只能产生非系统消息WM_SYSKEYDOWN和WM_SYSKEYUP按键消息只能产生系统消息【6-1】设计一个窗口,在该窗口中练习键盘的响应,要求如下:(1)单击键盘上的向上箭头时,窗口中显示“Youhadhittedtheupkey”(2)单击键时,窗口中显示“YouhadhittedtheSHIFTkey”(3)单击键时,窗口中显示“YouhadhittedtheCTRLkey”(4)单击
5、键时,窗口中显示“YouhadhittedtheCTRLAkey”(5)单击键时,窗口中显示“YouhadhittedtheSHIFTBkey”longWINAPIWndProc(HWNDhWnd,UINTiMessage,UINTwParam,LONGlParam){HDChDC;//定义设备环境句柄.PAINTSTRUCTps;//定义包含绘图信息的结构体变量HPENhPen;//定义画笔句柄。HBRUSHhBrush;//定义画刷句柄//以下定义输出的字符串。staticcharcUp[]="YouhadhittedtheUPkey";
6、staticcharcCtrl[]="YouhadhittedtheCtrlkey";staticcharcShift[]="YouhadhittedtheSHIFTkey";staticcharcCtrl_A[]="YouhadhittedtheCTRLAkey";staticcharcShift_B[]="YouhadhittedtheSHIFTBkey";//下面定义并初始化按键标志变量。staticBOOLnUpKeyDown=FALSE,nShiftKeyDown=FALSE,nCtrlKeyDown=FALSE,nCtrlAKeyDown=FALSE,nShift
7、BKeyDown=FALSE;switch(iMessage){caseWM_KEYDOWN:{switch(wParam){caseVK_UP://当按上箭头键时,变量置为真。nUpKeyDown=TRUE;break;caseVK_SHIFT://当按shift键时,变量置为真。nShiftKeyDown=TRUE;break;caseVK_CONTROL://当按control键时,变量置为真nCtrlKeyDown=TRUE;break;default:break;}}break;caseWM_
此文档下载收益归作者所有