C++工作笔记-WM_KEYFIRST和WM_KEYDOWN的用法
转载地址如下:
http://www.xuebuyuan.com/1544382.html
在讲这两个标识符的作用开始,先小感慨下:遇到问题,不要急着百度,请充分利用好VC++的中的各种头文件
在VC中,右击"WM_KEYFIRST"字符,选择“转向WM_KEYFIRST的定义”,VC自动跳转到定义这两个标识符的头文件WINUER.H,代码如下:
#define WM_KEYFIRST 0x0100
#define WM_KEYDOWN 0x0100
#define WM_KEYUP 0x0101
#define WM_CHAR 0x0102
#define WM_DEADCHAR 0x0103
#define WM_SYSKEYDOWN 0x0104
#define WM_SYSKEYUP 0x0105
#define WM_SYSCHAR 0x0106
#define WM_SYSDEADCHAR 0x0107
#define WM_KEYLAST 0x0108
你应该知道,所有的键盘消息只有中间的八种,也就是WM_KEYDOWN到WM_SYSDEADCHAR,细心观察,这八个标识符的值是递增的。于是,WM_KEYFIRST和WM_KEYLAST的作用就是告诉你键盘消息的取值范围。
你也许奇怪,为什么WM_KEYFIRST和WM_KEYDOWN是相等的,这应该是便于“检索”键盘消息。
TCHAR *szMessage[]=
{
TEXT("WM_KEYDOWN"), TEXT("WM_KEYUP"),
TEXT("WM_CHAR"), TEXT("WM_DEADCHAR"),
TEXT("WM_SYSKEYDOWN"), TEXT("WM_SYSKEYUP"),
TEXT("WM_SYSCHAR"), TEXT("WM_SYSDEADCHAR")
};
以上是字符串数组,包括了所有的键盘消息。切记,这数组中的八个标识符的数序是和头文件中的一样的。至于为什么必须这么做,看下面。。。。
好了,现在是最终告诉你WM_KEYFIRST和WM_KEYLAST作用的时候了。
假设你要确定在上述数组中,"WM_KEYDOWN"字符串的索引。你可以用WM_KEYDOWN — WM_KEYFIRST,结果是0.现在你是否明白第一个问题(为什么WM_KEYFIRST和WM_KEYDOWN是相等的)了吧。0就是WM_KEYDOWN在上述数组中的索引。 好了,再假如,如果这八个标识符在数组中的顺序和在头文件中的顺序不一样,那么WM_KEYDOWN — WM_KEYFIRST还是0,可是,此时可能WM_KEYDOWN的索引在数组中的索引不是0。
其实,这两个标识符的作用,看上去不是特别大。个人感觉,如有纰漏,请指点。
C++工作笔记-WM_KEYFIRST和WM_KEYDOWN的用法相关推荐
- C++工作笔记-stl中map基础用法(插入,遍历,删除)
在最近一直在阅读xx项目,看到里面用到了map,读大学期间基本上从来没用到过这种stl(大学就用了Vector和list).下面对map敲如下代码: 运行截图如下: 代码如下: #include &l ...
- 大数据工程师工作笔记之集群节点准备
序 大数据工程师工作笔记系列分享 2020,成为更好的自己 01 Linux 系统网络配置 在公司中,一般来说,大数据集群是不能上网的,这就需要一个跳板机,将需要的组件传到大数据集群中离线安装就可以了 ...
- 苹果ios开发一年的工作笔记
苹果ios开发一年的工作笔记 退回输入键盘 - (BOOL) textFieldShouldReturn:(id)textField{ [textField resignFirstResponder] ...
- 工作笔记1——利用bat脚本实现批量上传文件到ftp服务器
工作笔记1--利用bat脚本实现批量上传文件到ftp服务器 问题概述 利用ftp命令实现上传文件 注意 限时功能 将共享目录映射到电脑中的某个盘符 实现断点续传 问题概述 公司中有大概225k个文件需 ...
- 罗辑思维在全链路压测方面的实践和工作笔记
业务的知名度越高,其背后技术团队承受的压力就越大.一旦出现技术问题,就有可能被放大,尤其是当服务的是对知识获取体验要求颇高的用户群体. 提供知识服务的罗辑思维主张"省时间的获取知识" ...
- 系统架构工作笔记-数据展示进程与读取数据进程分离,实现低耦合(展示软件可适用任意厂家数据库)
目录 背景 实践环境 逻辑结构图 运行截图 数据展示进程源码 服务进程(插件调用)源码 插件源码 MySQL相关 背景 工作一年零1个月了(加上实习),靠着工作中学到的东西,花了周末2天时间,做了一个 ...
- MySQL工作笔记-使用事件和存储过程定时更新某表数据
目录 基本概念 演示及源码 基本概念 因为要看某展示软件的效果,上午用了Qt实时对表进行更新操作! 这是非常low的表现.其中的一个原因就是效率问题! Qt工作笔记-Qt连接Mysql数据库,检索及修 ...
- Qt工作笔记-发送端发送Json格式的数据包,接收端解析数据包
原理以及运行 原理是因为QJsonDocument提供了一个函数toJson 可以直接把Json数据转成QByteArray,这样就可以直接发送数据包,然后再按照常规方法解析即可,本源码中含解析内容, ...
- 《Oracle DBA工作笔记》第一章
<Oracle DBA工作笔记>第一章 BLOG文档结构图I 本文简介 建荣的新书<Oracle DBA工作笔记>拿到手了,下午离下班还有1个小时的时候有空了,就阅读了下新书的 ...
最新文章
- linux make 命令行 定义宏(-D)传递给C源代码 简介
- 估价分类不允许分离估价
- Python机器视觉编程常用数据结构与示例
- Spring+Mybatis多数据源配置
- 山石网科SG-6000-E5560配置SSL ***实例
- unity应用开发实战案例_「简历」STAR法则的实战应用,附手把手教学案例
- Django ORM 数据库操作
- python实现单张图像拼接与批量图片拼接
- Python机器学习:评价分类结果008多分类问题中的混淆矩阵
- 【Flink】 Flink与Kafka版本对应关系
- 用例子理解java7内存结构
- mssql 无法启动调试器 数据为空_Windows无法启动:如何利用PE拯救桌面重要数据?...
- jsf 导航_JSF页面导航示例教程
- 认真与随便,结果有天壤之别
- 哈夫曼树的构造和哈夫曼编码实现详细讲解(含例题详细讲解)
- java_SSD3_实验报告_面向对象——多态
- 驱动精灵安装的流氓软件如何卸载、及删除驱动精灵
- 手机浏览器下载IOS版APP
- java520.1314表白_告白日表白公式 520.1314 临沂人知道怎么玩吗
- 常见的 vue elementUI el的标签总结