第 号
|
Last Updated 2004/11/26
|
IME制御
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 が提供されている.
2004/11/24
参照
IME無効