有没有这方面经验的朋友,当当前焦点不在可编辑的文本框时,要在PreTranslateMessage中截获ctrl+shift消息,来切换输入法,代码如下:
if (((GetAsyncKeyState( VK_CONTROL ) & 0x8000)) && pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_RETURN)
{
ActivateKeyboardLayout((HKL)HKL_NEXT,KLF_SUBSTITUTE_OK);   //切换输入法

HIMC hIMC;
DWORD dwConversion, dwSentence;
hIMC=ImmGetContext(m_hWnd);
ImmGetConversionStatus(hIMC,&dwConversion,&dwSentence);

if((dwConversion & IME_CMODE_LANGUAGE) != IME_CMODE_NATIVE)
{
dwConversion &= ~IME_CMODE_LANGUAGE;
dwConversion |= IME_CMODE_NATIVE;     
}

if (!(dwConversion & IME_CMODE_SYMBOL))     dwConversion |= IME_CMODE_SYMBOL;     

ImmSetConversionStatus(hIMC,dwConversion,dwSentence);
ImmReleaseContext(m_hWnd,hIMC);

return TRUE;
}
当执行后,能够切换输入法,但是语言栏的输入法图标和弹出的输入法不一致,比如第一输入法时搜狗,但语言栏图标却是智能ABC,当切换到智能ABC的时候,语言栏图标又变成了双拼,什么原因造成的,另外,如果把shift键改成其他的键,就不会有这个问题存在,但当切换到美式键盘时,又会存在卡死的现象,何故输入法切换问题

解决方案 »

  1.   

    看下这个
    http://www.yesky.com/176/1655676.shtml
      

  2.   

    回复 #2:这个也看到过,现在已经能够弹出输入法,最主要的问题就是,按ctrl+shift切换输入法的时候,图标栏的图标和输入法不一致,但如果改成ctrl+其他键,就是正常的,很困扰,不知道是什么原因造成的 
      

  3.   

    没有人知道这种情况???
    if (((GetAsyncKeyState( VK_CONTROL ) & 0x8000)) && pMsg->message == WM_KEYDOWN && pMsg->wParam == VK_SHIFT)
    {
    ActivateKeyboardLayout((HKL)HKL_NEXT,KLF_SUBSTITUTE_OK);   //切换输入法HIMC hIMC;
    DWORD dwConversion, dwSentence;
    hIMC=ImmGetContext(m_hWnd);
    ImmGetConversionStatus(hIMC,&dwConversion,&dwSentence);if((dwConversion & IME_CMODE_LANGUAGE) != IME_CMODE_NATIVE)
    {
    dwConversion &= ~IME_CMODE_LANGUAGE;
    dwConversion |= IME_CMODE_NATIVE;     
    }if (!(dwConversion & IME_CMODE_SYMBOL))     dwConversion |= IME_CMODE_SYMBOL;     ImmSetConversionStatus(hIMC,dwConversion,dwSentence);
    ImmReleaseContext(m_hWnd,hIMC);return TRUE;
    }用CTRL+SHIFT切换时,到第三种输入法的时候图标就不一致了,如下图但如果把VK_SHIFT键换成其他的键,如ALT键,就不会有这种情况,这是什么原因哦,很奇怪