bool QWinInputContext::reconvertByQt() { // Reconversion performed by Qt. // Call this for Korean IME when wParam is VK_HANJA under WM_IME_KEYDOWN. QWidget *w = focusWidget(); if(!w) return false; if (!(ImmGetProperty(GetKeyboardLayout(0), IGP_SETCOMPSTR) & SCS_CAP_SETRECONVERTSTRING)) return false; unsigned int rcSizeWithout = reconvertString((LPARAM)NULL); if (rcSizeWithout <= sizeof(RECONVERTSTRING)) return false; std::vector rcStructure(rcSizeWithout, '\0'); PRECONVERTSTRING reconvert = (PRECONVERTSTRING) &rcStructure[0]; reconvert->dwSize = rcSizeWithout; unsigned int rcSizeWith = reconvertString(reconvert); HIMC imc = getContext(w->effectiveWinId()); if (!imc) return false; if (!::ImmSetCompositionStringW(imc, SCS_SETRECONVERTSTRING, reconvert, rcSizeWith, NULL, 0)) { ::ImmReleaseContext(w->effectiveWinId(), imc); return false; } ::ImmReleaseContext(w->effectiveWinId(), imc); return true; }