ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:20.60KB ,
资源ID:7651454      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-7651454.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(windows编程常用键盘消息命令.docx)为本站会员(yjrm16270)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

windows编程常用键盘消息命令.docx

1、windows 编程常用键盘消息命令1扫描码与虚拟码键盘从最早的83键发展到当今流行的101键,虽然增加了许多键,但按键的基本操作保持不变,即按下一个键或释放一个键。按下一个键或释放一个键时,键盘设备就产生一个扫描码(ScanCode),这些扫描码是键盘的物理码,每一个扫描码可以惟一地确定一个按键。不同厂家生产的键盘,其扫描码有可能是不一样的,即它是与设备相关的。键盘上的每个键对应两个不同的扫描码,当键被按下时,产生的扫描码的最高位为0,当键被释放时,产生的扫描码的最高位为1。为了实现与设备无关的键盘操作,Windows 系统中定义了一个虚拟键盘。虚拟键盘不但包括了目前键盘所使用的标准键集,还

2、定义了一些目前键盘上所没有的虚拟键,以便以后进行扩充。在虚拟键盘上,每个键对应一个虚拟码(VirtualKeyCode)。Windows 的键盘驱动程序(Keybord.drv)将各种不同的物理键盘映射到同一个虚拟键盘,程序员处理的是这惟一的虚拟键。这样,用户所编写的有关键盘的程序就与具体的键盘设备无关了。表9.3所示为常用的虚拟键代码。表9.3 常用的虚拟键代码符号常量 对应按键 符号常量 对应按键VK_LBUTTON 鼠标左键 VK_0VK_9 09键VK_RBUTTON 鼠标右键 VK_AVK_Z AZ 键VK_BACK退格键(BACKSPACE 键)VK_NUMPAD09 数字小键盘0

3、9VK_RETURN 回车键 VK_MULTIPY 乘号键VK_SHIFT Shift 键 VK_ADD 加号键VK_CAPITAL CapsLock 键 VK_SUBTRACT 减号键VK_ESCAPE Esc 键 VK_F1VK_F24 F1F24键VK_SPACE SpaceBar 键 VK_NUMLOCK Num Lock 键VK_PRIOR PageUP 键 VK_TAB 制表键(Tab)VK_NEXT PageDown 键 VK_PAUSE Pause 键VK_END End 键 VK_INSERT Ins 键VK_HOME Home 键 VK_DELETE Del 键VK_LEF

4、T Left Arrow()键 VK_DOWN Down Arrow()键就像用户移动或单击鼠标键时 Windows 会给应用程序发送消息一样,当用户敲击键盘时,Windows 也同样会给应用程序发送消息,鼠标消息和键盘消息的区别在于鼠标消息被发送到鼠标所处的窗口,而键盘消息总是被发送给有输入焦点的窗口,通常是屏幕上最前面的窗口。Windows 的键盘消息分为击键消息和字符消息两类。2击键消息对于键盘上的所有键,每次按下或释放时,都会产生击键消息。击键消息主要有4种,分别为 WM_KEYDOWN(键按下) 、WM_SYSKEYDOWN(系统键按下)、WM_KEYUP( 弹起)、WM_SYSKE

5、YUP(系统键弹起)。WM_SYSKEYDOWN 和 WM_SYSKEYUP 消息称做系统击键消息,它们由 F10键或含有 Alt 键的击键组合产生,用于快速激活菜单及菜单中的选项、切换当前窗口和其他系统消息。Windows 使用默认处理函数 DefWindowProc()来对这类消息进行处理,应用程序常常忽略它们。WM_KEYDOWN 和 WM_KEYUP 消息称做非系统击键消息,用户每按一个非系统键,都会产生这类消息,它是应用程序中重点处理的消息。在一些游戏程序中,用户常常按动“” 、 “”、 “” 、 “”键来实现窗口中图形的移动,开发商处理的键盘消息就是这些非系统击键消息。当应用程序不

6、处理时,由默认的处理函数 DefWindowProc()对这类消息进行处理。3字符消息当按了键盘上的任何一个键时,Windows 都会向窗口函数发送击键消息,对于那些产生可显示字符的操作,Windows 还会向窗口函数发送字符消息。因此,字符消息不是由硬件产生的,而是由可产生显示字符的击键消息转换而来的。可以这样认为:当按了任何键时都产生击键消息,而当按了那些可显示的字符键时,除了发送击键消息外,还发出字符消息。因此, 当按了可显示字符 A 键时,将产生WM_KEYDOWN、WM_CHAR 、WM_KEYUP 消息:当按了不可显示字符 Shift 键时,将产生 WM_KEYDOWN 和 WM_

7、KEYUP 消息。由于用户击键方式和击键次序的不同,窗口函数所接收到的消息数目和次序也不相同。表9.4列出了一些击键与消息的对应关系。表9.4 击键与消息的对应关系击键方式 消息次序 wParam 参数WM_KEYDOWN 虚拟键 AWM_CHAR A 的 ASCII 码按下 A 键,然后释放WM_KEYUP 虚拟键 AWM_KEYDOWN 虚拟键 VK_SHIFTWM_KEYDOWN 虚拟键 AWM_CHAR A 的 ASCII 码WM_KEYUP 虚拟键 A先按 Shift 键,再按 A键,然后释放 A 键,最后释放 Shift 键WM_KEYUP 虚拟键 VK_SHIFTWM_KEYDO

8、WN 虚拟键 AWM_CHAR A 的 ASCII 码WM_KEYDOWN 虚拟键 AWM_CHAR A 的 ASCII 码WM_KEYDOWN 虚拟键 AWM_CHAR A 的 ASCII 码按下 A 键持续一段时间WM_KEYUP 虚拟键 A4键盘消息的实例【例9.2】 本程序实现在客户区画矩形或椭圆,按 C 键显示椭圆,按 R 键显示矩形;当按 “” 、 “”、 “” 、 “”键时,屏幕上的图形相应移动。 程序演示本程序练习键盘的字符消息 WM_CHAR 和击键消息WM_KEYDOWN。其具体实现步骤为:(1)生成应用程序框架利用应用程序向导 MFC AppWizard(exe)创建一个

9、单文档的应用程序框架,该工程的名称为 KeyMsg,每个操作步骤都使用默认的选项。(2)在视图类 CKeyMsgView 中添加数据成员要想在屏幕上画一个矩形或椭圆,关键是要传递一个矩形对象。为此,要在视图类中添加一个矩形变量 m_Rect。在工程 KeyMsg 的工作区中,选择 ClassView 选项卡,在类名列表框中选择视图类 CKeyMsgView,然后单击鼠标右键,在弹出的快捷菜单中选择 Add Member Variable 命令,则弹出如图9.3所示的对话框。在 Variable Type 文本框中输入 CRect,在 Variable Name 文本框中输入m_Rect,选择

10、Access(访问控制属性)为 Protected(保护)。最后单击 OK按钮,则在视图类 CKeyMsgView 中添加了一个 CRect 的保护成员变量 m_Rect,用于存放显示椭圆或矩形的参数。另外,为了确定是画圆还是画矩形,需要在视图类中添加一个Bool 型的成员变量 m_IsCircle。当该值为真时,代表画圆:为假时,代表画矩形。添加的方法同上。(3)对成员变量 m_Rect 进行初始化在视图类 CKeyMsgView 的构造函数中添加如下的代码可以实现对数据成员的初始化。CKeyMsgView:CKeyMsgView()m_Rect=CRect(10,10,100,100);

11、/圆或矩形的初始位置m_IsCircle=true; /刚开始要画一个圆(4)添加字符消息的映射函数选择“View|ClassWizard”命令,弹出 MFC ClassWizard 对话框,在 Class name 列表框中选择 CKeyMsgView,在 Messages 列表框中选择 WM_CHAR,然后单击 Add Function 按钮,这样就为视图类添加了WM_CHAR 的消息处理函数 OnChar,如图9.4 所示。图9.3 添加成员变量对话框图9.4 类向导对话框最后,单击 Edit Code 按钮,光标自动定位到 OnChar()实现处,在该消息映射函数中添加的代码如下:vo

12、id CKeyMsgView:OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)/TODO: Add your message handler code here and/or call defaultbool nOldShape=m_IsCircle;/保存旧的图形形状,上一次图形代码和这一次的图形代码不一样时才重新绘图switch (nChar)case c:case C:m_IsCircle=true; /圆的代码break;case r:case R:m_IsCircle=false; /矩形的代码break;if(nOldShape!=m_Is

13、Circle)InvalidateRect(m_Rect);/*若当前按的键与前一次的不同,则调用 InvalidateRect(),该函数使得屏幕的指定矩形区域无效,它发送 WM_PAINT 消息,从而间接地调用 OnDraw(CDC*pDC)函数,使得整个屏幕重新绘制一遍*/CView:OnChar(nChar, nRepCnt, nFlags);(5)添加击键消息的映射函数与上一步类似,用 ClassWizard 为视图类 CKeyMsgView 添加击键消息 WM_KEYDOWN 的消息映射函数 OnKeyDown(),并在该函数中添加如下代码,用于移动屏幕上的图形。void CKey

14、MsgView:OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)/TODO: Add your message handler code here and/or call defaultCPoint ptOffSet=CPoint(0, 0);/偏移点为(0, 0)switch(nChar)case VK_LEFT:ptOffSet=CPoint(-2,0);/左移两个像素break;case VK_RIGHT:ptOffSet=CPoint(2, 0); /右移break;case VK_UP:ptOffSet=CPoint(0,-2);/上移

15、break;case VK_DOWN:ptOffSet=CPoint(0, 2);/下移break;m_Rect.OffsetRect(ptOffSet); /使得矩形偏移Invalidate(); /刷新屏幕CView:OnKeyDown(nChar, nRepCnt, nFlags);(6)超载视图类的虚函数 OnDraw(),实现屏幕图形的绘制void CKeyMsgView:OnDraw(CDC* pDC)CKeyMsgDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);if(m_IsCircle) /如果画圆pDC-Ellipse(m_Rect); /画圆else/如果不是画圆的话pDC-Rectangle(m_Rect);/画矩形

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报