gpt4 book ai didi

c++ - 为什么我的 WM_UNICHAR 处理程序从未被调用过?

转载 作者:搜寻专家 更新时间:2023-10-31 01:23:56 24 4
gpt4 key购买 nike

我有一个想要识别 Unicode 的 ATL 控件。我为 WM_UNICHAR 添加了一个消息处理程序:

MESSAGE_HANDLER( WM_UNICHAR, OnUniChar )

但是,由于某些原因,从未调用 OnUniChar 处理程序。

根据文档,首先应使用“UNICODE_NOCHAR”调用处理程序,如果您想接收 UTF-32 字符,处理程序应返回 TRUE。但是,正如我所说,处理程序永远不会被调用。

激活它需要做什么特别的事情吗?

最佳答案

您认为应该生成 WM_UNICHAR 消息的操作是什么?

如果您的代码(或 ATL 代码)最终调用了 CreateWindowW,那么您的窗口已经支持 Unicode,并且 WM_CHAR 消息将是 UTF-16 格式。

关于何时确切地生成 WM_UNICHAR 消息的文档还远未明确,但根据我在 Google 网上论坛和互联网上非常有限的搜索中收集到的信息,它看起来像是由第 3 方应用程序发送的,而不是由 Windows 本身,除非 Window 是一个 ANSI 窗口(CreateWindowA 等等)。您是否尝试过手动向您的窗口发送 WM_UNICHAR 消息以查看会发生什么?如果您收到消息,那么您的消息发送代码没有任何问题,也没有任何事情会导致 WM_UNICHAR。您还可以使用 Spy++ 检查并查看您是否收到了该消息,但我怀疑它只是没有被发送。

关于c++ - 为什么我的 WM_UNICHAR 处理程序从未被调用过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/378296/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com