关于中文输入选词的事件监听问题(WINDOWS平台)

zerozerg2006 复旦大学 2020-10-22 11:14:50
我现在知道,可以通过监听windows消息中的IME消息WM_IME_STARTCOMPOSITION与WM_IME_ENDCOMPOSITION来标记当前是不是正在进行非直接输入(也就是中文输入)。我试图在自己的程序中,通过这两个消息来确定当前是否正在输入,来进行箭头键,回车键等一些功能键的屏蔽。

在windows10上,测试过多个输入法,百度,QQ,微软拼音,都可以按照这个规范来做。我的程序也能正确运行。
但是使用搜狗输入法就是一个很奇怪的情况。

使用spy++进行消息监控可以发现。
这个输入法的WM_IME_STARTCOMPOSITION是在你确定选词后,和END在同一帧里发出来的。
而对于不选词,直接进行退格或者切换输入法,使得选词条消失则不会有任何END事件。

但是搜狗输入法在所有的输入控件中,都可以保证正确的对功能键进行屏蔽。所以我很好奇,windows标准的输入控件是怎么对功能键进行屏蔽的?
...全文
115 1 点赞 打赏 收藏 举报
写回复
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
zerozerg2006 2020-10-22
处理好了,是我们使用的glfw不够新,存在bug,导致进行非直接输入的案件被传到了程序中引起了错误。这个bug今年1月份进行了修复。。。。 还是解释一下bug成因。处于非直接输入的时候,所有按键的事件都会传一个参数VK_PROCESSKEY进行表示,所以需要将这个状态的事件进行一个过滤。
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2020-10-22 11:14
社区公告
暂无公告