我正在制作像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);
}