すいません。 また質問です。
前回の質問で、メッセージのキャッチの仕方はわかったのですが、
それで受けたIMEの入力を画面に表示する方法がわかりません。
MSDNのとおり、
char str[80];
wsprintf(str, %c%c, (char)(wParam & 0xff),(char)(wParam>>8));
dc.TextOut(1,1,str,strlen(str));
をやってみたのですが、いまいちうまくいきません。
どうしたらいいのでしょうか。御教授ください。
どこがどううまくいかないのでしょう?
strにはご希望の文字列になっていますか?
dcはきちんと取得できていますか?
「いまいちうまくいかない」ということでは伝わりませんよ。
そもそもデバッガで追跡した上での質問かどうかも疑問です。
あとは小言になりますが
>前回の質問で、メッセージのキャッチの仕方はわかったのですが、
「前回の質問」と言われてもそれを見ていない人には何のことか分かりませんし、どこに書いてあるのかも
調べようがないです。
すぐ近くにあるので分からないわけでもありませんが、URLを載せるくらいの配慮は欲しいものです。
前の質問を見ないと wParam が何であるかも分からないようでは、レスがつきにくいと思いますよ。
古い MSDN だと、WM_IME_CHAR の説明にうそが書いてあるので、オンライン版で確認してみてください。
http://msdn.microsoft.com/library/default.asp
描画は OnDraw や OnPaint でやった方がいいと思います。
[参考]
WM_IME_CHAR ではなく WM_IME_COMPOSITION を使うと、1文字ずつではなくて文字列をまとめて取得できます。
CdSさん、kazumaさん、ご忠告ありがとうございます。
次回から気をつけます。
あ、前回の質問と言うのは、12/15日のもので、アドレスは
http://isweb6.infoseek.co.jp/computer/t-soga/cgi-bin/wwwlng.cgi?print+200112/01120074.txt
です。
質問に関しては、アドバイスしていただいたことと、その周辺を
MSDNで探し回った結果、描画処理を全部OnPaintに集めて、
WM_IME_CHARのかわりにWM_IME_COMPOSITIONを使い、
さらにImm***系のAPI関数を使うことで、
自前のCWnd派生クラスでIMEの入力を無事キャッチすることが出来ました。
どうもありがとうございました。