IME制御

[戻る]
リムファクシ 2006/01/06(金) 10:35:13
テキストエディタを作成しています。
ダイアログ上にエディットコントロールとピクチャコントロールがあり、
エディットコントロール上で変換中の文字列を取得し、ピクチャコントロール上へ
描画するところまでは出来ました。(WM_IME_COMPOSITIONをキャッチ)
最終的には、ピクチャコントロールだけの状態にしたいのですが、
IMEがエディットコントロールにフォーカスが無いと起動してくれません・・・
ImmSetOpenStatus()でIMEオープンを試みましたが駄目でした。
ピクチャコントロールでIMEを制御出来るようにするには、
どうしたら良いでしょうか?
宜しくお願いします。

Gak 2006/01/06(金) 13:47:35
ImmGetContext()
ImmSetCompositionWindow()
ImmSetCompositionFont()
ImmReleaseContext()

関係あるのはこの辺かな

リムファクシ 2006/01/07(土) 10:09:31
ご回答ありがとうございます。
おかげで、ImmSetCompositionWindowにて未確定文字の表示位置は設定出来るように
なりました。
ここで、新たな問題が出てきてしまいました・・・
未確定文字は自前で描画しているので、IMEの未確定文字の表示が邪魔になってしまいま
す。先程のAPIで画面の外に追いやっても良いのですが、IMEの変換候補リストも
画面端に表示されてしまうので、出来ればIMEの未確定文字を非表示にしたいのです。
ImmSetCompositionFontで極小フォントを指定してみましたが、ゴマ粒の様に表示され、
完全に消し去る事が出来ませんでした。

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=1730&forum=7
さんと同じ悩みなのですが、解決出来ません・・・

お知恵をお貸し下さい

シャノン 2006/01/07(土) 12:28:18
こんなの参考になりますか?
http://www.honet.ne.jp/~tri/program/noime.html

リムファクシ 2006/01/10(火) 09:37:51
[[解決]]
ありがとうございました。
親のダイアログクラスでメッセージを処理していたのが原因で、
うまく行かなかったみたいです。
自作のクラスにてサブクラス化して、そのクラス内でメッセージ処理したところ、
シャノンさんの方法で解決致しました。

古いスレッドには追加発言できません。