整理日: 2015年2月16日code
enum _IME_Mode { _IME_Off = 1, _IME_Hiragana, _IME_Katakana, _IME_Alpha, _IME_KatakanaHalf, _IME_AlphaHalf }; void SetImeConversionStatus(HWND hwnd, _IME_Mode mode) { HIMC hImc = ImmGetContext(hwnd); if (mode == _IME_Off) { // IMEオフ ImmSetOpenStatus(hImc, FALSE); } else { ImmSetOpenStatus(hImc, TRUE); DWORD dwConversion = 0; DWORD dwSentence = 0; ImmGetConversionStatus(hImc, &dwConversion, &dwSentence); switch (mode) { case _IME_Hiragana: // ひらがな dwConversion |= IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE; dwConversion &= ~IME_CMODE_KATAKANA; break; case _IME_Katakana: // 全角カタカナ dwConversion |= IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_KATAKANA; break; case _IME_Alpha: // 全角英數 dwConversion |= IME_CMODE_FULLSHAPE; dwConversion &= ~(IME_CMODE_NATIVE | IME_CMODE_KATAKANA); break; case _IME_KatakanaHalf: // 半角カタカナ dwConversion |= IME_CMODE_NATIVE | IME_CMODE_KATAKANA; dwConversion &= ~IME_CMODE_FULLSHAPE; break; case _IME_AlphaHalf: // 半角英數 dwConversion &= ~(IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_KATAKANA); break; default: break; } ImmSetConversionStatus(hImc, dwConversion, dwSentence); } ImmReleaseContext(hwnd, hImc); }