none
CRichEditCtrlで日本語の確定を捕まえる方法を教えてください。 RRS feed

  • 質問

  • VisualC++2010 MFC で開発しております。

    CRichEditCtrlを拡張して、いろいろやっているのですが、

    日本語入力の確定Enterだけを捕まえたいのですが いい方法がありましたらご教授お願いします。

    (半角Enterなどと処理を区別したいのが理由です)

    よろしくお願い致します。

    .

    .

    .

    自己調査Res>  WM_IME_ENDCOMPOSITION を捕まえれば良いのかなぁ~



    • 編集済み AppKey 2016年10月11日 5:06
    2016年10月11日 3:50

回答

  • おっしゃる通り、IMEの変換で確定したときは WM_IME_ENDCOMPOSITION が飛んでくるのでこのメッセージを捕まえればよいと思います。

    ただ、このメッセージは、IME ONのとき例えば「aaa」と入力(「あああ」と表示される)して、F10キーで半角英字に変更してからEnterキーを押しても、同じメッセージが飛んできます。

    半角英字か全角文字か判定を行う必要がなければ、WM_IME_ENDCOMPOSITION のメッセージだけで行けると思います。判定を行う場合は、WM_IME_ENDCOMPOSITION メッセージを受け取った後、カーソル位置の直前の文字を取得して全角か半角か判定するようにすると行けるのではないでしょうか?(すみません。未検証です。)

    • 編集済み kenjinoteMVP 2016年10月11日 5:53
    • 回答としてマーク AppKey 2016年10月11日 5:59
    2016年10月11日 5:41

すべての返信

  • おっしゃる通り、IMEの変換で確定したときは WM_IME_ENDCOMPOSITION が飛んでくるのでこのメッセージを捕まえればよいと思います。

    ただ、このメッセージは、IME ONのとき例えば「aaa」と入力(「あああ」と表示される)して、F10キーで半角英字に変更してからEnterキーを押しても、同じメッセージが飛んできます。

    半角英字か全角文字か判定を行う必要がなければ、WM_IME_ENDCOMPOSITION のメッセージだけで行けると思います。判定を行う場合は、WM_IME_ENDCOMPOSITION メッセージを受け取った後、カーソル位置の直前の文字を取得して全角か半角か判定するようにすると行けるのではないでしょうか?(すみません。未検証です。)

    • 編集済み kenjinoteMVP 2016年10月11日 5:53
    • 回答としてマーク AppKey 2016年10月11日 5:59
    2016年10月11日 5:41
  • おっしゃる通り、IMEの変換で確定したときは WM_IME_ENDCOMPOSITION が飛んでくるのでこのメッセージを捕まえればよいと思います。

    ただ、このメッセージは、IME ONのとき例えば「aaa」と入力(「あああ」と表示される)して、F10キーで半角英字に変更してからEnterキーを押しても、同じメッセージが飛んできます。

    半角英字か全角文字か判定を行う必要がなければ、WM_IME_ENDCOMPOSITION のメッセージだけで行けると思います。判定を行う場合は、WM_IME_ENDCOMPOSITION メッセージを受け取った後、カーソル位置の直前の文字を取得して全角か半角か判定するようにすると行けるのではないでしょうか?(すみません。未検証です。)

    ありがとうございました。

    2016年10月11日 6:00