WM_IME_CHARはとりあえず保留にして,WM_CHARで連続して来た2バイトがSJISなら漢字としてWM_IME_CHARと同じ経路で処理するようにしました.
で,初めにやってみたら上位と下位がひっくり返ってしまう.メッセージの到着順調べても上下の順で来るし,マニュアル見てもWM_IME_CHARは上がlead byte/下がtrail byteとなっていておかしいところはない.
散々悩んだあげくCEditView::Command_IME_CHARとWM_IME_CHARを処理しているところを見るとなんと上位と下位をひっくり返して渡してるじゃないですか.も~,混乱させるようなインターフェースにするなよ...ほとんど罠です.
どうやら,char*にキャストしてそのまま渡すためにこうしたようですが,混乱を招くだけなので CEditView::Command_IME_CHAR()の引数はWM_IME_CHARの引数と同じ形式(上位が1バイト目)に変えますね.