VC编程中关于键盘和鼠标消息的响应.ppt
《VC编程中关于键盘和鼠标消息的响应.ppt》由会员分享,可在线阅读,更多相关《VC编程中关于键盘和鼠标消息的响应.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Visual C+Visual C+与面向对象程序设计与面向对象程序设计第第4 4章章 VC+VC+编程中关于键盘编程中关于键盘与鼠标消息的响应与鼠标消息的响应德州学院德州学院 计算机系计算机系主讲教师主讲教师 韩金姝韩金姝1 1 本章主要内容本章主要内容v 键盘在应用程序中的应用键盘在应用程序中的应用v 键盘操作应用举例键盘操作应用举例v 鼠标在应用程序中的应用鼠标在应用程序中的应用v 鼠标应用举例鼠标应用举例v 例题和习题中涉及的函数例题和习题中涉及的函数2 2 键盘在应用程序中的应用键盘在应用程序中的应用v键盘消息的生成键盘消息的生成用户按键用户按键键盘中断处理程序对所击键编码(扫描码键
2、盘中断处理程序对所击键编码(扫描码-虚虚拟码,以实现设备无关性)拟码,以实现设备无关性)调用调用Windows的的USER.EXE程序生成键盘消息程序生成键盘消息到消息队列等候处理到消息队列等候处理3 3 键盘在应用程序中的应用键盘在应用程序中的应用v 键盘消息分类键盘消息分类按键消息按键消息字符消息字符消息v 输入焦点和插字符输入焦点和插字符4 4按键消息按键消息v 按键消息分类按键消息分类系统按键消息系统按键消息:AltAlt键键+相关输入键组合产生的消息。由相关输入键组合产生的消息。由WindowsWindows系统内部处理。系统内部处理。WM_SYSKEYDOWN/WM_SYSKEYD
3、OWN/WM_SYSKEYUPWM_SYSKEYUP非系统按键消息非系统按键消息:不使用不使用AltAlt键组合的消息。键组合的消息。WM_KEYDOWNWM_KEYDOWN/WM_KEYUPWM_KEYUP5 5按键消息按键消息v 按键消息的构成:按键消息的构成:包含扫描码、虚拟码以及其他与击键有包含扫描码、虚拟码以及其他与击键有关的消息。放在关的消息。放在wParamwParam和和lParamlParam中中 虚拟码是与设备无关的键盘编码,其值虚拟码是与设备无关的键盘编码,其值存放在按键消息的存放在按键消息的wParamwParam参数中(表参数中(表4-4-1)1)lParam lPa
4、ram不同位数的含义不同位数的含义(表表4-2)4-2)6 6 字符消息字符消息v WinMainWinMain函数的消息循环中函数的消息循环中TranslateMessageTranslateMessage函数函数把按键消息把按键消息转化为字符消息转化为字符消息,当键盘驱动程序,当键盘驱动程序把键盘字符映射成把键盘字符映射成ASCIIASCII码后,产生码后,产生字符消息字符消息。(表表4-3)4-3)7 7 输入焦点和插字符输入焦点和插字符v 输入焦点输入焦点 应用程序的众多窗口应用程序的众多窗口共享共享键盘,仅有一个窗口键盘,仅有一个窗口过程能接收键盘消息,称为过程能接收键盘消息,称为有
5、输入焦点的窗口有输入焦点的窗口。窗口函数通过捕获窗口函数通过捕获WM_SETFOCUS/WM_SETFOCUS/WM_KILLFOCUSWM_KILLFOCUS消息以确定当前窗口是否具有输消息以确定当前窗口是否具有输入焦点。入焦点。v 插字符插字符 WindowsWindows操作系统用插字符指示当前正文位置。操作系统用插字符指示当前正文位置。插字符是应用程序插字符是应用程序共享共享的系统资源的系统资源。只有拥有只有拥有“输入焦点输入焦点”的窗口才能拥有插字符。的窗口才能拥有插字符。8 8 键盘操作应用举例键盘操作应用举例v 例例4 41 1(P51P51):):键盘消息处理程序键盘消息处理程
6、序 单击一个键后,在窗口中依次显示出:按键消单击一个键后,在窗口中依次显示出:按键消息、参数息、参数wParamwParam的值,若为字符消息时,还显示的值,若为字符消息时,还显示出相应字母、重复记位数、出相应字母、重复记位数、OEMOEM扫描码、扩展键扫描码、扩展键标志、标志、AltAlt键按下标志、按键的先前状态和转换键按下标志、按键的先前状态和转换状态等内容。状态等内容。演示程序演示程序1 19 9键盘操作应用举例键盘操作应用举例v 习题习题(P69):P69):设计一个窗口,在该窗口中练习键盘的响应,设计一个窗口,在该窗口中练习键盘的响应,要求如下:要求如下:(1 1)单击键盘的向上箭
7、头时,窗口中显示)单击键盘的向上箭头时,窗口中显示”You had You had hittedhitted the up key”the up key”(2 2)单击单击键时,窗口中显示键时,窗口中显示”You You had had hittedhitted the SHIFT key”the SHIFT key”(3 3)单击单击键时,窗口中显示键时,窗口中显示”You had You had hittedhitted the CTRL key”the CTRL key”演示程序演示程序2 21010 鼠标在应用程序中的应用鼠标在应用程序中的应用v鼠标鼠标是一种定位是一种定位输入输入设备
8、,有单击、双击和设备,有单击、双击和拖动功能。拖动功能。vWINDOWSWINDOWS中通过光标指示当前鼠标位置。系统中通过光标指示当前鼠标位置。系统预定义光标形式预定义光标形式见表见表4 44 4v应用程序加载光标资源:应用程序加载光标资源:在定义窗口类或者在程序中调用在定义窗口类或者在程序中调用LoadCursor(hThisInst,lpszCursornameLoadCursor(hThisInst,lpszCursorname)1111鼠标在应用程序中的应用鼠标在应用程序中的应用v 鼠标消息的产生:鼠标消息的产生:WindowsWindows操作系统通过鼠标设备驱动程序接收操作系统通
9、过鼠标设备驱动程序接收鼠标输入。鼠标设备驱动程序在启动鼠标输入。鼠标设备驱动程序在启动WindowsWindows时装入。时装入。v 在窗口内有鼠标事件发生在窗口内有鼠标事件发生 窗口接收一个鼠标事件窗口接收一个鼠标事件 产生用户区鼠标消息产生用户区鼠标消息v常用的鼠标消息:常用的鼠标消息:表表4 45 5 1212鼠标在应用程序中的应用鼠标在应用程序中的应用v 鼠标消息的构成:鼠标消息的构成:通过通过lParamlParam和和wParamwParam,可以确定鼠标的位置和可以确定鼠标的位置和鼠标键的状态。鼠标键的状态。l lParamlParam:包含鼠标坐标位置。包含鼠标坐标位置。低位低
10、位X;X;高位高位Y Y。l wParamwParam:指示各种虚键状态的值。表指示各种虚键状态的值。表4-64-6。1313鼠标在应用程序中的应用鼠标在应用程序中的应用v鼠标消息的处理:鼠标消息的处理:1.1.非用户区鼠标消息非用户区鼠标消息:当在一个窗口的用户区以外的地方(例如在窗当在一个窗口的用户区以外的地方(例如在窗框的菜单、滚动条、工具条和标题条等处)产框的菜单、滚动条、工具条和标题条等处)产生一个鼠标事件,就将产生一个非用户区鼠标生一个鼠标事件,就将产生一个非用户区鼠标消息。消息。非用户区鼠标消息,不由应用程序具体处理,非用户区鼠标消息,不由应用程序具体处理,而是送往而是送往Def
11、WindowProcDefWindowProc()()。1414鼠标在应用程序中的应用鼠标在应用程序中的应用v鼠标消息的处理:鼠标消息的处理:2.2.用户区鼠标消息用户区鼠标消息:处理时要考虑,鼠标左键按下同时检测处理时要考虑,鼠标左键按下同时检测ShiftShift和和CtrlCtrl键:键:Case WM_LBUTTONDOWN:Case WM_LBUTTONDOWN:if(if(wParam&MK_CONTROL)&(wParam&MK_SHIFTwParam&MK_CONTROL)&(wParam&MK_SHIFT).break;break;Case WM_LBUTTONUP:Case
12、 WM_LBUTTONUP:.break;break;1515鼠标在应用程序中的应用鼠标在应用程序中的应用v鼠标双击消息的处理:鼠标双击消息的处理:v若要使窗口函数能接收鼠标双击消息,在注册若要使窗口函数能接收鼠标双击消息,在注册窗口时必须注明该窗口类具有窗口时必须注明该窗口类具有CS_DBLCLKSCS_DBLCLKS属性。属性。否则是两次双击否则是两次双击=CS_HEADRAW|CS_VERDARW|CS_DBLCLKS=CS_HEADRAW|CS_VERDARW|CS_DBLCLKSv双击的时间间隔:默认双击的时间间隔:默认vSetDoubleClickTimeSetDoubleClic
13、kTime()()重新设定重新设定1616鼠标在应用程序中的应用鼠标在应用程序中的应用v 窗口对鼠标消息的捕获窗口对鼠标消息的捕获:1.SetCapture(hWnd)1.SetCapture(hWnd):可以使可以使WindowsWindows发发送的所有鼠标消息均定向到某一窗口,而不管送的所有鼠标消息均定向到某一窗口,而不管鼠标的光标处于何处。鼠标的光标处于何处。2.2.ReleaseCaptureReleaseCapture()():释放鼠标,以释放鼠标,以使其它窗口正常接收鼠标消息。因为:一旦从使其它窗口正常接收鼠标消息。因为:一旦从窗口捕获了鼠标,系统的键盘功能就暂时失效,窗口捕获了
14、鼠标,系统的键盘功能就暂时失效,其它窗口也无法得到鼠标消息。其它窗口也无法得到鼠标消息。1717鼠标应用举例v例例4-34-3(P65P65):):鼠标输入示范程序鼠标输入示范程序 通过本程序,学习如何相应鼠标信息、改变光通过本程序,学习如何相应鼠标信息、改变光标形状等用法,如用户在窗口的不同区域移动标形状等用法,如用户在窗口的不同区域移动鼠标时,光标将显示不同的形状,如鼠标时,光标将显示不同的形状,如“十十”字字形光标、形光标、“水平双箭头水平双箭头”光标、光标、”垂直双箭头垂直双箭头“光标、光标、”沙露沙露“光标等。光标等。演示程序演示程序3 31818 例题和习题中涉及的函数v RECT
15、RECTvThe RECT structure defines the coordinates of the upper-left The RECT structure defines the coordinates of the upper-left and lower-right corners of a rectangle.and lower-right corners of a rectangle.vtypedeftypedef structstruct _RECT _RECT LONG left;LONG top;LONG right;LONG bottom;LONG left;LO
16、NG top;LONG right;LONG bottom;RECT,*PRECT;RECT,*PRECT;vMembersMembersvleft Specifies the x-coordinate of the upper-left corner of the left Specifies the x-coordinate of the upper-left corner of the rectangle.rectangle.vtop Specifies the y-coordinate of the upper-left corner of the top Specifies the
17、y-coordinate of the upper-left corner of the rectangle.rectangle.vright Specifies the x-coordinate of the lower-right corner of right Specifies the x-coordinate of the lower-right corner of the rectangle.the rectangle.vbottom Specifies the y-coordinate of the lower-right corner of bottom Specifies t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 编程 关于 键盘 鼠标 消息 响应
限制150内