Last Updated 2004/11/24
Programming Tips Visual C++ API  索 引 
IME制御
2004/11/24

IME の API を使用するには,imm.h をインクルードして IMM32.LIB をリンクする.

  HWND hWnd = GetSafeHwnd();
  HIMC hIMC = ImmGetContext(hWnd);
  if( FALSE == ImmGetOpenStatus(hIMC) ) {
      ImmSetOpenStatus(hIMC, TRUE);
  }
  ImmReleaseContext(hWnd, hIMC);


IME の状態を変更するには,対象のコントロールがフォーカスを持っている時でないとうまくいかないかもしれない.
マイクロソフトも IME は簡単に壊れることを認めている.
IME を制御する前に壊れていないかを確認すればよいとのこと.(なんじゃそりゃ)

    HIMC hImc = ImmGetContext( hWnd );   
    if( hImc == NULL ) {
        hImc = ImmCreateContext();
        HIMC oldhImc = ImmAssociateContext( hWnd, hImc );
    }
    ImmSetOpenStatus( hImc, TRUE );


Win16 では SendIMEMessage() があったが,Win32 では SendIMEMEssageEx() となる.
Win32 では IME 関連の API が変更となり,Imm〜 という API が提供されている.


参照
IME無効
前後のTips
IME制御

DSS ProgrammingTipsCGI Ver2.02