【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

对于一个应用来说,按键和鼠标都是基本的消息。当然,win32也需要独立处理按键消息和鼠标消息。今天,我们就讨论一下按键消息。一般认为,当键盘上一个key按下去之后,os会给app发送三个消息,分别是WM_KEYDOWN、WM_CHAR、WM_KEYUP。WM_KEYDOWN是在key按下去的一刹那发送的,WM_CHAR是os通知app按下去的字符是什么,WM_KEYUP则是key重启返回的时候发送的。

一般情况下,如果是普通的字符信息,比如说0-9、a-z,或者是A-Z,一般只要处理WM_CHAR信息就可以了。但是对于具有特殊含义的key,比如说F1-F12,或者是ctrl、shift、alt、tab、windows这样的key,WM_KEYDOWN和WM_KEYUP也是需要处理的,因为这些按键通常是作为特殊按键和其他按键一起配合使用的,所以在WM_KEYDOWN的时候就要做好状态标记,这样有利于后面的应用。

为了验证我们的想法,大家可以做这样一个实验,

         case WM_KEYDOWN://MessageBox(NULL, "down", "tips", 0);break;case WM_KEYUP://MessageBox(NULL, "up", "tips", 0);break;case WM_CHAR:MessageBox(NULL, "char", "tips", 0);break;

这是在WndProc里面添加的消息函数。大家可以先将MessageBox都注释掉,再一个一个打开。这个时候,就可以观察一下,当一个key按下去的时候,是不是真的会有对话框弹出来。如果对话框弹出来,尽量用鼠标来单击,这样可以避免key的影响。

这里的key只是处理普通的字符,那如何处理输入法给出的字符串信息呢,其实win32在这方面也做好了准备。这个信息就是WM_IME_CHAR相关的信息。大家只要做好WM_IME_CHAR方面的处理,就可以收到输入法提供的字符串信息了。类似的消息还有WM_IME_KEYDOWN、WM_IME_KEYUP、WM_IME_COMPOSITION等等,大家可以具体问题具体分析。

     case WM_IME_CHAR:break;

大家可以自己实际操作试一试。

win32开发(按键消息)相关推荐

  1. win32开发(消息机制)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] win32真正的本质其实就是消息机制.大家如果调试win32程序,就会发现win32的应用其实是 ...

  2. 跟我一起玩Win32开发

    跟我一起玩Win32开发(1):关于C++的几个要点 我不知道各位,一提起 C++ ,第一感觉是什么?而据俺的观察,许多人几乎成了 " 谈 C 色变 " .不管是 C 还是 C++ ...

  3. 发送linux键盘消息,在C#程序中模拟发送键盘按键消息

    using System.Runtime.InteropServices; 引入键盘事件函数 [DllImport("user32.dll")] public static ext ...

  4. Win32汇编笔记-消息基础

    WIN32的消息机制 windows系统是一个消息驱动的OS,操作通过处理各种消息来响应用户的操作. 对于每一个带有窗口的线程,系统都会给他分配一个自己的消息队列,用于处理消息派送(Dispatch) ...

  5. win32开发(对话框启动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有过mfc开发经验的朋友都知道,在mfc下面有三种app开发的方式,它分别是mdi开发.sdi开 ...

  6. 键盘(键盘基础,按键消息)

    在Microsoft Windows 98中,键盘和鼠标是两个标准的使用者输入来源,在一些连贯操作中常产生互补作用.当然,鼠标在今天的应用程序中比十年前使用得更为广泛.甚至在一些应用程序中,我们更习惯 ...

  7. 跟我一起玩Win32开发(4):创建菜单

    跟我一起玩Win32开发(4):创建菜单 也不知道发生什么事情,CSDN把我的文章弄到首页,结果有不少说我在误人子弟,是啊,我去年就说过了,如果你要成为砖家级人物,请远离我的博客,我这个人没什么特长, ...

  8. VB实现向窗口发送按键消息

    VB实现向窗口发送按键消息 : 嵌入式模拟键盘 待解决问题 vb WM_KEYDOWN 参数设置???? id="question_content">Private Decl ...

  9. 跟我一起玩Win32开发(5):具有单选标记的菜单

    跟我一起玩Win32开发(5):具有单选标记的菜单 帅哥们,美女们,下午好,我又来误人子弟,请做好准备. 今天,我们的目的是,想要实现下图中的这种菜单效果. 就是一种类似单选按钮的菜单,多个菜单项中, ...

最新文章

  1. Visual studio 2005如何实现源码管理
  2. c 与matlab混编,谈谈Matlab与C/C++或C#的互调用(混合编程)
  3. Zend Studio添加ThinkPHP代码提示方法
  4. Ubuntu 16.04下如何安装VMware-Workstation
  5. MySQL检查约束(CHECK)
  6. GPUImage 简介
  7. Android传感器开发详解
  8. 【SPOJ - SCITIES】Selfish Cities (二分图最优匹配,最大费用流)
  9. Spring MVC Hibernate MySQL集成CRUD示例教程
  10. 疯狂连连看之开发游戏界面组件一
  11. spring---aop(3)---Spring AOP的拦截器链
  12. jsoup的Node类
  13. Tomcat Https配置
  14. OO思想(只留做自己看理解)
  15. Neural Style Transfer
  16. Fread函数的用法
  17. 解决IDEA支持GBK编码项目的问题
  18. Unity之粒子特效参数详解
  19. 数独终局生成及残局求解
  20. 轻型货车鼓式制动器设计(论文+CAD图纸+Catia三维图+开题报告+任务书+翻译……)

热门文章

  1. win7下的ipython没有的问题
  2. 微博转发的内容如何实现点击人名跳转到个人主页
  3. shell tr命令
  4. ES terms多值搜索及范围过滤深入剖析-搜索系统线上实战
  5. ArrayList在foreach正常迭代删除不报错的原因
  6. 缓存问题引发的一系列优化
  7. 最小生成树,回忆复习篇。
  8. 由于 web 服务器上此资源的访问控制列表(acl)配置或加密设置,您无权查看此目录或页面。...
  9. 无法删除文件提示找不到指定文件导致文件无法删除的解决方法
  10. MFC初探 —— 基于对话框的MFC显示控制台