Bug 4753 MFCEmbedのURLバーでIMEが無効のままになる
初回投稿日時: 2005年11月18日02時50分43秒
カテゴリ: Mozilla Core
SNS:
Tweet (list)
えむけいさんが確認、修正してくれた。さんくす!!
私は無効化にはWINNLSEnableIME
を使っていたのだが、これはWin3.x時代に使われていた廃止されたAPI。MSDNからも削除されていたのだが(つまり今となっては隠しAPI)、私が他にIMEを無効化するAPIを知らなかったことと、DelphiのVCLがこれを利用していたことが、このAPIを使う理由になっていた。
えむけいさんによると、ImmAssociateContext
で代用できるとのこと。このAPIそのものの存在は知っていたが、MSDNの説明を見てもその使い道を理解できていなかった。コンテキストの関連づけを解除するということが、IMEを利用できなくなる、ということだったわけだ。
VCLがこの廃止されたAPIを使い続けている理由はなんだろうか? ImmAssociateContext
だと、Windowsの特定のバージョンでは問題がある、とかいうのでなければ良いのだが。
ちなみに、WINNLSEnableIME
は引数にウインドウハンドルを持っているが、えむけいさんの情報によると、ウインドウ単位ではなく、プロセス単位でIMEをコントロールしているらしい。どおりで、デバッグ中に、私の意図通りに動いていなかった訳だ。(今思えば、コモンダイアログで期待通りの挙動にならなかった時点で気づくべきだった。)まだまだ勉強と洞察力が足りないなぁと反省させられた。