如何在游戏窗口中激活当前输入法

激活窗口关联的当前输入法:

::ImmAssociateContextEx(gamewnd, NULL, IACE_DEFAULT);

关闭窗口关联的当前输入法:

::ImmAssociateContextEx(gamewnd, NULL, NULL);


我们在游戏中聊天的时候,肯定需要用到输入法,输中文嘛。通常是这样一个过程:

    1. 按回车,激活聊天控件

    2. 按下 Ctrl + Space,切换到中文输入法

    3. 然后开始输入中文

    4. 最后回车,发送聊天信息

    5. 聊天控件恢复正常状态

    6. 关闭输入法


    以搜狗输入法为例,游戏窗口刚启动的时候,一般是不会激活搜狗的,“游戏窗口关联的当前输入法”应该是空,桌面右下角的搜狗工具栏是不会显示的。这时候你按回车,激活聊天控件,开始输入文字,也只能输入英文,想要输入中文,必须按下 Ctrl + Space,使得游戏窗口的“关联的当前输入法”切换为搜狗,然后才能输中文,输入完回车发送后,需要“关闭输入法

    为什么要关闭输入法,因为如果不关闭,后续你按键施放技能的时候,比如1234,或者控制角色行走的时候,比如WASD,会显示在输入法工具栏上,而游戏窗口收不到这些按键消息,然后你的角色就处于失控状态,如果你这会儿正在pk,可能就没躲开敌人的技能,挂了。这时候你会觉得输入法特别烦人,而输入法工具栏的状态可能是这样:


而你的角色可能是这样:


所以聊天结束,关闭输入法很重要啊!有木有?关闭了输入法,输入法工具栏就不会出来烦你了,你就能继续快乐的PK了。


    有一些细节需要阐述下,但是我对这方面底层并不了解,只是猜测:

        1. 输入法应该是归进程管理的,当前进程应该同时只能有一种输入法,默认是英文,你聊天时按了Ctrl + Space,就是中文输入法了

        2. ImmAssociateContextEx的作用应该是把窗口和进程管理的输入法关联起来,关联好了,你就能在该窗口中使用这个输入法;取消关联了,就不能使用(或者可能回归默认输入法,只能输英文?)。

        3. 窗口的输入法状态(不是进程的输入法状态)应该有三种:“没有关联输入法”、“关联默认的英文输入法”、“关联中文输入法”

        4. 窗口“没有关联输入法”,和“关联默认的英文输入法”,在我们看来,效果应该是一样的,只能输英文。


Windows IME相关函数, https://msdn.microsoft.com/zh-cn/dd318649



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值