输入法切换?

ykx_yeer 2008-10-10 09:15:23

/**
关闭输入法
*/
void CloseInput()
{
///保存当前IME
m_hImeLaseKL = GetKeyboardLayout(0);
ImmSimulateHotKey(GetActiveWindow(),IME_CHOTKEY_IME_NONIME_TOGGLE);
};

/**
打开输入法
*/
void OpenInput()
{
if (m_hImeLaseKL==0)
{
return;
}
ActivateKeyboardLayout(m_hImeLaseKL, 0 );
};


在游戏中使用,要关闭输入法时,保存当前输入法,并进行切换,要打开输入法时,激活之前保存的输入法

问题:执行完ImmSimulateHotKey之后,用GetKeyboardLayout获取当前输入法并未改变?而hImeLaseKL却切换
...全文
182 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
ykx_yeer 2008-10-13
  • 打赏
  • 举报
回复
问题已经解决了,是代码设计问题,是我自己没弄清楚,前后不一致是因为分别属于不同类。
虽然不是你们所说的,但还是从你们的答复中学到一些东西
ykx_yeer 2008-10-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sys0002 的回复:]
ImmSimulateHotKey(GetActiveWindow(),IME_CHOTKEY_IME_NONIME_TOGGLE);

可能是GetActiveWindow()返回的窗口不是游戏的窗口。
[/Quote]

怎么知道是否是游戏窗口的句柄?
scq2099yt 2008-10-10
  • 打赏
  • 举报
回复
ImmSimulateHotKey(GetActiveWindow(),IME_CHOTKEY_IME_NONIME_TOGGLE);

可能是GetActiveWindow()返回的窗口不是游戏的窗口。
wgm001 2008-10-10
  • 打赏
  • 举报
回复
帮你顶下..
sys0002 2008-10-10
  • 打赏
  • 举报
回复
ImmSimulateHotKey(GetActiveWindow(),IME_CHOTKEY_IME_NONIME_TOGGLE);

可能是GetActiveWindow()返回的窗口不是游戏的窗口。
北方大冬瓜 2008-10-10
  • 打赏
  • 举报
回复
用 Spy 看一下

16,472

社区成员

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

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

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