常量WM_IME_COMPOSITION和WM_IME_KEYLAST如何具有相同的值

时间:2017-10-18 22:00:15

标签: winapi

常量WM_IME_COMPOSITIONWM_IME_KEYLAST都具有相同的值0x010F。看起来像接收其中一个窗口消息的Windows程序将不知道它收到了哪个消息。那么如何编写代码来处理这些消息呢?

我出于好奇而问。我无需处理WM_IME_COMPOSITIONWM_IME_KEYLAST。只是浏览一些文档并注意到我不理解的奇怪事情。

1 个答案:

答案 0 :(得分:1)

WM_IME_*不是邮件标识符。它是一个符号常量,标志着WM_KEYFIRST消息范围 1 的结束。您可以在整个Windows SDK中看到此模式,例如有WM_KEYLASTWM_IME_KEYLAST符号描述与关键消息相关的值范围。

回答你的问题:你没有处理WM_IME_KEYFIRST,所以没有歧义。您可以(并且应该)在要处理一系列消息的表达式中使用它,例如。

1 虽然在这种特殊情况下我并不完全确定,因为没有相应的WM_IME_KEYLAST符号。 WM_IME_COMPOSITION可能只是一个过时的名称,其中当时未使用的消息值被重用于新的{{1}}消息。发货后,您无法返回并删除该符号,因此它仍然存在,但不再用于任何目的。