【问题标题】:Getting Unicode character in WM_KEYDOWN在 WM_KEYDOWN 中获取 Unicode 字符
【发布时间】:2010-11-29 19:19:53
【问题描述】:

在我需要以不同方式处理大量键的应用程序中,我想处理 WM_KEYDOWN 中的所有情况,并且根本不使用 WM_CHAR。是否可以从一系列 WM_KEYDOWN 提供的虚拟键中获取正确的 ASCII/UNICODE 字符,而不是依赖更常规的 TranslateMsg / WM_CHAR?

例如:应用程序应该能够以完全不同的方式处理 Shift-B,而不是按 CTRL-B 的常规 B。

使用 MapVirtualKey,您不会使用 Shift、Control 和 Alt 键的状态,或者至少我看不到。

正如 Leo Davidson 回答的那样:您可以使用 ToUnicode 调用自己执行 VK -> Unicode 转换。

【问题讨论】:

    标签: windows keyboard winapi


    【解决方案1】:

    WM_KEYDOWN 处理字符代码,基本上是指键盘上的物理键。

    如果您想处理 unicode 字符,请改为处理 WM_CHAR(16 位 Unicode 字符,假设您的窗口本身是 unicode)或 WM_UNICHAR(32 位 Unicode 字符)。

    编辑:如果您想自己进行转换,请使用ToUnicode API。

    【讨论】:

    • 这个我知道。我问了这个问题,看看 TranslateMsg 发送 WM_CHAR 的逻辑是否也可以使用另一个不使用 Windows 消息的路径(如 API 调用)获得
    • 这看起来很有希望:将直接尝试!每天学习一个新的 WinAPI 调用..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    相关资源
    最近更新 更多