易语言教程_易语言源码_易语言视频教程_易语言论坛

 找回密码
 点击注册

Vip新手入门区
新手学习指南  学员作品展示 Vip课程总纲  Vip绝密课程系列

Vip相关下载区
Vip模块下载   Vip模块绑定   Vip模块例子 魔鬼插件下载  魔鬼插件例子  教程工具下载

Vip论坛服务区
教程问题提问区   模块问题提问区 技术交流区   魔鬼插件建议   忘记密码找回

VIP会员办理QQ: 8643245   
【请先加好友,然后到好友列表双击联系客服,办理VIP会员。】
【基础篇】易语言辅助入门基础教程
VIP模块办理QQ: 7189694 办理正版魔鬼作坊VIP模块 【基础篇】OD与CE入门基础教程
办理【终身VIP会员】“秒杀价” 仅需 RMB278.00元… 【基础篇】零基础绝密汇编语言入门课程 (共26课已完成)…
办理VIP详情…猛击这里查看详情 【基础篇】VIP辅助入门基础教程-新手必学 已发布10课 ……
VIP教程免费试看章节…猛击下载 【第1款】制作“辅助挂”教程目录查看(共107+16_x64下更新课已完成)…
亲爱的VIP学员,请到此写下你学习的感受与发布作品截图… 【第2款】制作“任务挂”教程目录查看(共77+1_x64下更新课已完成)…
卍解吧!不用bp send类封包断点找CALL的各种通杀思路 【第3款】驱动过保护技术课程(共38课已完成)…
【绝密教程】VIP绝密教程系列---注意:随时会更新! 【第4款】VIP邪恶二叉树辅助课程 (共31+17_x64下更新课已完成)…
【精品第13款】3D射击游戏与页游透视 智辅课程 已完成17课… 【第5款】零基础易语言按键辅助教程 (30课已完成)…
【精品第14款】变态功能辅助是如何炼成的 已完成36课… 【第6款】从零开始学习封包辅助技术教程(20课已完成) …
【精品第15款】DNF商业变态辅助的修炼之路 已完成27课… 【第7款】大杀特杀分析来源与CALL吸血鬼课程 (56课已完成)
【精品第16款】中控台多线程多开自动化商业辅助课程 已完成66课… 【第8款】完全零基础网页辅助课程(40课已完成)
【全新精品第17款】检测原理与过游戏内存检测技术课程 已发布9课… 【第9款】自动登录与操控LUA技术课程 (共46+8_x64下更新课已完成)…
【全新精品第18款】手游全自动化任务脚本辅助课程 已发布25课…… 【第10款】网页辅助封包脱机进阶课程 已完成30课…
【全新精品第19款】D3D方框骨骼透视与自瞄辅助课程进阶篇 已发布34课…… 【第11款】VC++ Lua脚本辅助课程 已完成112课…
【全新精品第20款】 X64模拟器吃鸡游戏方框透视自瞄辅助课程 发布中... 【第12款】网游脱机封包智辅课程 已完成35课…
查看: 1278|回复: 0

MFC 键盘消息常量与虚拟码

[复制链接]

14

主题

3

回帖

23

积分

编程入门

Rank: 1

魔鬼币
512
发表于 2017-5-28 08:06:22 | 显示全部楼层 |阅读模式
一:首先介绍键盘消息

系统消息:
    ALT,F1,——F24等,是由系统内部处理的,程序本身就存在,比如F1是帮助键。
    WM_SYSKEYDOWN
    WM_SYSKEYUP
    WM_SYSCHAR

非系统消息:
    是由我们自己加上去的,
    WM_KEYDOWN
    WM_KEYUP
    WM_CHAR

二:介绍虚拟键代码
符号形式             十六进制形式        说明
VK_LBUTTON           01             鼠标左键
VK_RBUTTON            02             鼠标右键
VK_CANCEL             03          Control-break 过程
VK_MBUTTON          04                  鼠标中键
VK_BACK                 08           BACKSPACE 键
VK_TAB                    09              TAB 键
VK_CLEAR               0C                CLEAR 键
VK_RETURN              0D            ENTER 键
VK_SHIFT                 10                 SHIFT 键
VK_CONTROL         11                 CTRL 键
VK_MENU                 12                   ALT 键
VK_PAUSE               13                PAUSE 键
VK_CAPITAL             14                CAPS LOCK 键
VK_ESCAPE            1B            ESC 键
VK_SPACE               20                SPACEBAR
VK_PRIOR                21                PAGE UP 键
VK_NEXT                 22                PAGE DOWN 键
VK_END                   23                  END 键
VK_HOME                24             HOME 键
VK_LEFT                 25               LEFT ARROW 键
VK_UP                      26               UP ARROW 键
VK_RIGHT                27               RIGHT ARROW 键
VK_DOWN                28               DOWN ARROW 键
VK_SELECT              29              SELECT 键
VK_EXECUTE          2B                 EXECUTE 键
VK_SNAPSHOT        2C                    PRINT SCREEN键(用于Windows 3.0及以后版本)
VK_INSERT              2D                   INS 键
VK_DELETE            2E                         DEL 键
VK_HELP                 2F                         HELP键

VK_LWIN                 5B                  Left Windows 键 (Microsoft自然键盘)
VK_RWIN                 5C                Right Windows 键 (Microsoft自然键盘)
VK_APPS                5D                  Applications 键 (Microsoft自然键盘)
VK_NUMPAD0         60                 数字小键盘上的 0 键
VK_NUMPAD1         61                    数字小键盘上的 1 键
VK_NUMPAD2         62                 数字小键盘上的 2 键
VK_NUMPAD3         63                 数字小键盘上的 3 键
VK_NUMPAD4         64                 数字小键盘上的 4 键
VK_NUMPAD5         65                   数字小键盘上的 5 键
VK_NUMPAD6        66                数字小键盘上的 6 键
VK_NUMPAD7        67               数字小键盘上的 7 键
VK_NUMPAD8          68               数字小键盘上的 8 键
VK_NUMPAD9         69               数字小键盘上的 9 键
VK_MULTIPLY          6A              Multiply 键
VK_ADD                   6B                 Add键
VK_SEPARATOR           6C           Separator 键
VK_SUBTRACT             6D              Subtract 键
VK_DECIMAL              6E               Decimal 键
VK_DIVIDE               6F               Divide 键
VK_F1                    70               F1 键
VK_F2                    71                  F2 键
VK_F3                    72                   F3 键
VK_F4                    73                   F4 键
VK_F5                     74               F5 键
VK_F6                    75                  F6 键
VK_F7                    76                 F7 键
VK_F8                    77                  F8 键
VK_F9                    78                  F9 键
VK_F10                 79                 F10 键
VK_F11                 7A                 F11 键
VK_F12                 7B                 F12 键
VK_F13                 7C               F13 键
VK_F14                 7D               F14 键
VK_F15                 7 E                   F15 键
VK_F16                 7F                F16 键
VK_F17                80H               F17 键
VK_F18                81H              F18 键
VK_F19                82H               F19 键
VK_F20               83H            F20 键
VK_F21               84H             F21 键
VK_F22                85H             F22 键
VK_F23               86H            F23 键
VK_F24                 87H            F24 键
VK_NUMLOCK         90            NUM LOCK 键
VK_SCROLL         91             SCROLL LOCK 键
VK_ATTN              F6              Attn 键
VK_CRSEL          F7               CrSel 键
VK_EXSEL           F8             ExSel 键
VK_EREOF          F9              Erase EOF 键
VK_PLAY            FA           Play 键
VK_ZOOM           FB             Zoom 键
VK_OEM_CLEAR     FE         Clear 键

三:OnKeyDown不响应的原因:
    只是这个消息在到达窗体之前,已经被它的子控件捕获了,如果将窗体中的所有控件都删除,窗体就会捕获到这个消息,但要注意的是,MFC为了实现在窗体上切换子控件的焦点,已经将 VK_TAB,VK_LEFT,VK_RIGHT,VK_UP,VK_DOWN进行了处理,同时VK_RETURN也被系统捕获用来处理相应的确定事件,所以即使窗体中没控件,这几个键还是无法捕获
    也就是说,一个窗体仅在它没有可视和有效的控件时,才能响应OnKeyDown。

四:具体的解决方法(按键响应方法)
    可以调用窗体的PreTranslateMessage函数来实现,具体代码如下:
BOOL CMeetingDlg::PreTranslateMessage(MSG* pMsg)
{
if (pMsg->message==WM_KEYDOWN)
{
   switch (pMsg->wParam)
   {
   case VK_F1:
    if (::GetKeyState(VK_CONTROL)<0)
    {
     AfxMessageBox("ss");
    }
    break;
   case VK_F2:
    if (::GetKeyState(VK_CONTROL)<0)
    {
     AfxMessageBox("ss");
    }
    break;
   }
   
}
return CDialog::PreTranslateMessage(pMsg);
}
***********************************************************************************

在MFC(Microsoft Foundation Class)对响应消息进行了封装,

可以通过重载虚函数PreTranslateMessage()对所关心的消息进行截取与响应:

以下对截取与响应键盘 Enter 消息的截取与响应

这是对话框的响应键盘 Enter 消息方式:
BOOL C**Dlg::PreTranslateMessage(MSG* pMsg)
{
   //判断是否为键盘消息
   if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
   {
      //判断是否按下键盘Enter键
      if(pMsg->wParam==VK_RETURN)
      {

          return TRUE;
      }
   }
return CDialog::PreTranslateMessage(pMsg);
}

这是View视图类响应键盘 Enter 消息的方式:

BOOL C**View::PreTranslateMessage(MSG* pMsg)
{
 if (WM_KEYFIRST <= pMsg->message && pMsg->message <= WM_KEYLAST)
 {
  if(pMsg->wParam==VK_RETURN )
  {

        return TRUE;

    }
 }
 return CFormView::PreTranslateMessage(pMsg);
}

  在上面的代码中,首先将pMsg->message所表示的消息同WM_KEYFIRST 和WM_KEYLAST比较,确定是键盘消息,然后通过消息参数pMsg->wParam的值来判断是否是回车键(VK_RETURN,虚拟键码可以下面相关资料中查到)。
您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

魔鬼作坊|易语言教程|易语言源码|易语言论坛|易语言视频教程| 论坛导航|免责申明|手机版||网站地图
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表魔鬼作坊立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2010-2019 All Right Reserved.
快速回复 返回顶部 返回列表