当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么我的WM_UNICHAR处理程序从未调用过?》经验,为你挑选了1个好方法。

我有一个ATL控件,我想要支持Unicode.我为WM_UNICHAR添加了一个消息处理程序:

MESSAGE_HANDLER( WM_UNICHAR, OnUniChar )

但是,由于某种原因,永远不会调用OnUniChar处理程序.

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

激活这个有什么特别需要做的吗?



1> Joel..:

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

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

关于什么时候确切地生成WM_UNICHAR消息,文档还远远不清楚,但是我可以在谷歌群组和互联网上非常有限地搜索它,它看起来像是由第三方应用程序发送而不是由Windows本身发送,除非Window是一个ANSI窗口(CreateWindowA和所有这些).您是否尝试过手动向窗口发送WM_UNICHAR消息以查看会发生什么?如果您收到消息,那么您的消息调度代码没有任何问题,并且没有任何事情会导致WM_UNICHAR.你也可以查看Spy ++,看看你是否收到了这条消息,但我怀疑它还没有被发送.

推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有