欢迎来到天天文库
浏览记录
ID:38577694
大小:396.82 KB
页数:22页
时间:2019-06-15
《VC++编程中关于键盘和鼠标消息的响应》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VisualC++与面向对象程序设计第4章VC++编程中关于键盘与鼠标消息的响应德州学院计算机系主讲教师韩金姝1德州学院计算机系本章主要内容键盘在应用程序中的应用键盘操作应用举例鼠标在应用程序中的应用鼠标应用举例例题和习题中涉及的函数2德州学院计算机系键盘在应用程序中的应用键盘消息的生成用户按键键盘中断处理程序对所击键编码(扫描码->虚拟码,以实现设备无关性)调用Windows的USER.EXE程序生成键盘消息到消息队列等候处理3德州学院计算机系键盘在应用程序中的应用键盘消息分类按键消息字符消息
2、输入焦点和插字符返回主目录4德州学院计算机系按键消息按键消息分类系统按键消息:Alt键+相关输入键组合产生的消息。由Windows系统内部处理。WM_SYSKEYDOWN/WM_SYSKEYUP非系统按键消息:不使用Alt键组合的消息。WM_KEYDOWN/WM_KEYUP5德州学院计算机系按键消息按键消息的构成:包含扫描码、虚拟码以及其他与击键有关的消息。放在wParam和lParam中虚拟码是与设备无关的键盘编码,其值存放在按键消息的wParam参数中(表4-1)lParam不同位数的含义(
3、表4-2)HOME6德州学院计算机系字符消息WinMain函数的消息循环中TranslateMessage函数把按键消息转化为字符消息,当键盘驱动程序把键盘字符映射成ASCII码后,产生字符消息。(表4-3)HOME7德州学院计算机系输入焦点和插字符输入焦点应用程序的众多窗口共享键盘,仅有一个窗口过程能接收键盘消息,称为有输入焦点的窗口。窗口函数通过捕获WM_SETFOCUS/WM_KILLFOCUS消息以确定当前窗口是否具有输入焦点。插字符Windows操作系统用插字符指示当前正文位置。插字符
4、是应用程序共享的系统资源。只有拥有“输入焦点”的窗口才能拥有插字符。HOME8德州学院计算机系键盘操作应用举例例4-1(P51):键盘消息处理程序单击一个键后,在窗口中依次显示出:按键消息、参数wParam的值,若为字符消息时,还显示出相应字母、重复记位数、OEM扫描码、扩展键标志、Alt键按下标志、按键的先前状态和转换状态等内容。演示程序19德州学院计算机系键盘操作应用举例习题4.2(P69):设计一个窗口,在该窗口中练习键盘的响应,要求如下:(1)单击键盘的向上箭头时,窗口中显示”Youha
5、dhittedtheupkey”(2)单击键时,窗口中显示”YouhadhittedtheSHIFTkey”(3)单击键时,窗口中显示”YouhadhittedtheCTRLkey”演示程序2返回主目录10德州学院计算机系鼠标在应用程序中的应用鼠标是一种定位输入设备,有单击、双击和拖动功能。WINDOWS中通过光标指示当前鼠标位置。系统预定义光标形式见表4-4应用程序加载光标资源:在定义窗口类或者在程序中调用LoadCursor(hThisInst,lpszCursor
6、name)11德州学院计算机系鼠标在应用程序中的应用鼠标消息的产生:Windows操作系统通过鼠标设备驱动程序接收鼠标输入。鼠标设备驱动程序在启动Windows时装入。在窗口内有鼠标事件发生>>>>窗口接收一个鼠标事件>>>>产生用户区鼠标消息常用的鼠标消息:表4-512德州学院计算机系鼠标在应用程序中的应用鼠标消息的构成:通过lParam和wParam,可以确定鼠标的位置和鼠标键的状态。lParam:包含鼠标坐标位置。低位X;高位Y。wParam:指示各种虚键状态的值。表4-6。13德州学院计
7、算机系鼠标在应用程序中的应用鼠标消息的处理:1.非用户区鼠标消息:当在一个窗口的用户区以外的地方(例如在窗框的菜单、滚动条、工具条和标题条等处)产生一个鼠标事件,就将产生一个非用户区鼠标消息。非用户区鼠标消息,不由应用程序具体处理,而是送往DefWindowProc()。14德州学院计算机系鼠标在应用程序中的应用鼠标消息的处理:2.用户区鼠标消息:处理时要考虑,鼠标左键按下同时检测Shift和Ctrl键:CaseWM_LBUTTONDOWN:if(wParam&MK_CONTROL)&&(wPa
8、ram&MK_SHIFT)……..break;CaseWM_LBUTTONUP:……..break;15德州学院计算机系鼠标在应用程序中的应用鼠标双击消息的处理:若要使窗口函数能接收鼠标双击消息,在注册窗口时必须注明该窗口类具有CS_DBLCLKS属性。否则是两次双击wndclass.style=CS_HEADRAW
9、CS_VERDARW
10、CS_DBLCLKS双击的时间间隔:默认0.5sSetDoubleClickTime()重新设定16德州学院计算机系鼠标在应用程序中的应用窗口对鼠标消息的捕获
此文档下载收益归作者所有