【发布时间】:2021-05-04 15:39:18
【问题描述】:
什么意思
#define WM_KEYFIRST 0x0100
#define WM_KEYDOWN 0x0100
#define WM_KEYUP 0x0101
?这些是winuser.h 库中的第 1038、1039 和 1040 行。为什么这些值以及为什么WM_KEYFIRST 和WM_KEYDOWN 都与相同的值0x0100 相关?将两个名称设为相同值的目的是什么?为什么它是 4 个十六进制数字长?请告诉我这个魔法!
【问题讨论】:
-
WM_KEYFIRST可能是这样您可以很容易地找到第一个键,或者在数学中使用它来获取数组索引 (arr[key_read - WM_KEYFIRST]) 或用于其他邪恶目的。 -
关于另一个问题“为什么它是 4 个十六进制数字”,这是因为应用程序使用的消息标识符是
WORD(16 位)大小的。来自MSG文档:“消息 - 类型:UINT - 消息标识符。应用程序只能使用低位字;高位字由系统保留。”。