IMEの入力をえるにはどうすればいいのでしょうか。 – プログラミング – Home

IMEの入力をえるにはどうすればいいの...
 
通知
すべてクリア

[解決済] IMEの入力をえるにはどうすればいいのでしょうか。


酸化鉄
 酸化鉄
(@酸化鉄)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

すいません。 また質問です。
前回の質問で、メッセージのキャッチの仕方はわかったのですが、
それで受けたIMEの入力を画面に表示する方法がわかりません。
MSDNのとおり、

char str[80];
wsprintf(str, %c%c, (char)(wParam & 0xff),(char)(wParam>>8));
dc.TextOut(1,1,str,strlen(str));

をやってみたのですが、いまいちうまくいきません。

どうしたらいいのでしょうか。御教授ください。


引用未解決
トピックタグ
CdS
 CdS
(@CdS)
ゲスト
結合: 24年前
投稿: 176
 

どこがどううまくいかないのでしょう?

strにはご希望の文字列になっていますか?
dcはきちんと取得できていますか?

「いまいちうまくいかない」ということでは伝わりませんよ。
そもそもデバッガで追跡した上での質問かどうかも疑問です。

あとは小言になりますが
>前回の質問で、メッセージのキャッチの仕方はわかったのですが、
「前回の質問」と言われてもそれを見ていない人には何のことか分かりませんし、どこに書いてあるのかも
調べようがないです。
すぐ近くにあるので分からないわけでもありませんが、URLを載せるくらいの配慮は欲しいものです。


返信引用
kazuma
 kazuma
(@kazuma)
ゲスト
結合: 23年前
投稿: 217
 

前の質問を見ないと wParam が何であるかも分からないようでは、レスがつきにくいと思いますよ。

古い MSDN だと、WM_IME_CHAR の説明にうそが書いてあるので、オンライン版で確認してみてください。
http://msdn.microsoft.com/library/default.asp

描画は OnDraw や OnPaint でやった方がいいと思います。

[参考]
WM_IME_CHAR ではなく WM_IME_COMPOSITION を使うと、1文字ずつではなくて文字列をまとめて取得できます。


返信引用
酸化鉄
 酸化鉄
(@酸化鉄)
ゲスト
結合: 23年前
投稿: 4
Topic starter  

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の入力を無事キャッチすることが出来ました。

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました