如何在游戏窗口中激活当前输入法
2016-09-22 21:18
309 查看
激活窗口关联的当前输入法:
::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
::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
相关文章推荐
- 如何判断当前窗口是否激活
- symbian中如何检测编辑框的当前输入法类型zz
- C# 如何判断并且激活,最大化已有的外部应用程序的窗口? (源码例程)
- 防止重复运行程序并且激活当前正在运行的窗口
- 在RFT中关闭当前激活窗口的两种方法
- windows mobile 1.如何真正的退出程序而不隐藏窗体。2.让窗体跟着输入法窗口上移。3.如何创建非全屏Form
- 如何使一个窗口强制激活在最前端并且可以填写表单?
- symbian 如何检测编辑框的当前输入法类型
- 如何找到当前桌面某一窗口上的类名
- 如何找到当前桌面某一窗口上的类名
- [C#] 如何激活窗口
- 现阶段如何正常开游戏3外挂和窗口
- 游戏环境下如何实现真正D3D的窗口(可以说外挂窗口哦!)
- IE7如何在当前窗口点链接时使网页默认在新选项卡中打开
- 防止重复运行程序并且激活当前正在运行的窗口
- symbian中如何检测编辑框的当前输入法类型
- 游戏环境下如何实现真正D3D的窗口
- symbian中如何检测编辑框的当前输入法类型
- 创建类似于输入法窗口的非激活窗口
- symbian中如何检测编辑框的当前输入法类型