3

I'm making a screen keyboard like osk.exe. I added Korean/English toggle button. But ImmGetContext(::GetForegroundWindow()) returns 0 always. That's why it doesn't work.

What's wrong in my source code.

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);
}
Raymond
  • 473
  • 3
  • 18

0 Answers0