ImmGetContext(:: GetForegroundWindow())总是返回0

时间:2015-09-01 07:19:57

标签: virtual-keyboard on-screen-keyboard

我正在制作像osk.exe这样的屏幕键盘。 我添加了韩语/英语切换按钮。 但是ImmGetContext(:: GetForegroundWindow())总是返回0。 这就是为什么它不起作用的原因。

我的源代码中有什么问题。

void COnScreenKeyboardDlg::OnBnClickedSendKorEng() 
{   
    unsigned long Conversion, Sentence;
    BOOL bRet;

    HWND hWnd = ::GetForegroundWindow();
    TRACE("::GetForegroundWindow() = %p\n", hWnd);
    HIMC Mode = ImmGetContext(hWnd);
    TRACE("ImmGetContext(hWnd) = %p\n", Mode);
    bRet = ImmGetConversionStatus(Mode, &Conversion, &Sentence);

    if (bRet) {
        TRACE("Conversion = %d\n", Conversion);
        if (Conversion == IME_CMODE_HANGEUL) {
            bRet = ImmSetConversionStatus(Mode, IME_CMODE_ALPHANUMERIC, IME_CMODE_ALPHANUMERIC);
        } else {
            bRet = ImmSetConversionStatus(Mode, IME_CMODE_HANGEUL, IME_CMODE_HANGEUL);
        }
        TRACE("Conversion = %d, bRet = %s\n", Conversion, bRet?"TRUE":"FALSE");
    } else {
        TRACE("ImmGetConversionStatus return FALSE\n");
    }
    ImmReleaseContext(hWnd, Mode);
}

0 个答案:

没有答案