環境:WindowsXP VS2003 MFC
エクセルのようなコントロールを作成しています。
セルに対して文字を入力するのですが、文字の入力モードが直接入力の場合は
きれいに文字が出力されるのですが、入力モードがひらがなの場合に、
キーを押すと左上に文字が表示されて、文字が決定しEnterを押すと
セルに出力されます。
これはカッコ悪いので改善したいのですが、どのように回避したらよいのでしょうか?
想像ですが、IMR_COMPOSITIONWINDOW が関係ありそうな気がします。
http://msdn.microsoft.com/library/en-us/intl/ime_7gvr.asp
>dairygoodsさん
>想像ですが、IMR_COMPOSITIONWINDOW が関係ありそうな気がします。
> http://msdn.microsoft.com/library/en-us/intl/ime_7gvr.asp
IMR_COMPOSITIONWINDOWはWM_IME_REQUESTのパラメータとして送られて
くるようですが、ハンドラを作成してもメッセージが飛んできません。
情報が少ないようですがどうも再変換に関わるメッセージのようです。
とりあえず、WM_IME_STARTCOMPOSITIONのハンドラで
ImmGetContext
ImmSetCompositionWindow
ImmReleaseContext
の順に呼び出すと、位置を変えるくらいはできそうです。
入力位置にエディットボックスを表示してその中で入力させれば、
多分解決しそうな気がしますね。
今は直接キー入力を拾って処理しているのではないでしょうか?
どうしてもその方式でなきゃ嫌だと言う話なら
エディットコントロールがやっている処理を自分でやるしかないと
思います。