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。

其实,这两个标识符的作用,看上去不是特别大。个人感觉,如有纰漏,请指点。


猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/80192693