关于windows消息常量是UINT却只能使用WORD的问题
使用消息的相关API, 比如SendMessage等等, 对于msg这一个参数都是UINT类型, 但当你传入一个大于0x1FFFF的消息常量进去.
你会发现什么都不响应了.
虽然不是严格的UINT, 但是MSDN也没有说明消息ID不能大于0x1FFFF.
MSDN中只有关于 0-0xFFFF的描述, 大于0xFFFF的部分却没有任何说明:
The system reserves message-identifier values in the range 0x0000 through 0x03FF (the value of WM_USER – 1) for system-defined messages. Applications cannot use these values for private messages.
Values in the range 0x0400 (the value of WM_USER) through 0x7FFF are available for message identifiers for private window classes.
If your application is marked version 4.0, you can use message-identifier values in the range 0x8000 (WM_APP) through 0xBFFF for private messages.
The system returns a message identifier in the range 0xC000 through 0xFFFF when an application calls the RegisterWindowMessage function to register a message
所以想问:
为什么定义了UINT类型, 却不支持大于0x1FFFF的消息常量ID, 浪费这么多空间呢?