在基于CEditView类的程序中,当打开中文输入法时系统发送到程序什么消息?

mqmelon 2005-12-20 09:46:18
标题没有说清楚问题.在一个ceditview的程序中,改变了字符光标,输入英文时光标正常,但是一旦开启中文输入法,字符光标就自动恢复成系统默认光标.我是在wm_setfocus和wm_killfocus中处理自定义光标的.我想知道,开启中文输入法后,系统到底发送什么消息给程序,让程序恢复了字符光标的?
...全文
137 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
mqmelon 2005-12-21
  • 打赏
  • 举报
回复
我试着拦截所有的IME消息,但是都不成功.只要开启或关闭输入法,就会出现系统光标和自定义光标的闪烁.即,瞬间恢复系统光标,由于我拦截了keyup消息,所以只是一闪就又变回自定义的光标了
菜牛 2005-12-20
  • 打赏
  • 举报
回复
wm_ime类消息就是输入法消息,SPY++只能监测消息,是否拦截消息在程序外部无法判断,你只要在消息函数中进行你的处理就能知道是否正确拦截了消息。
mqmelon 2005-12-20
  • 打赏
  • 举报
回复
我看过了,在那一刻,发生了很多消息,一共有wm_ime_setcontext,wm_ime_notify等.可是当我在程序中拦截wm_keydown消息,并在其中重建字符光标后,会发生只有开启或关闭输入法时程序丢失自定认的字符光标.也就是说,现在程序只在开启或关闭输入法时才发生恢复光标现象.可是我查看了windows的消息,却找不到什么.而且,要命的是mfc并没有定义关于wm_ime_XXX的任何消息,只能自己定义拦截,而且我并不能保证拦截成功(程序编辑通过,但不知为何在spy++中却没有看到wm_ime_setcontext消息被拦截),怎么才能知道自己定义的拦截消息函数是否正确呢?
菜牛 2005-12-20
  • 打赏
  • 举报
回复
建议先用SPY++看看。

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧