この日記はMozillaのプロダクトへの貢献者としての私の成果を中心に、気になったバグやWeb界隈の話題について書いていますが、 断り書きがある場合を除き、いかなる団体のオフィシャルな見解ではありません。あくまでも個人的なものです。 Mozilla Foundation、Mozilla Corporation、及び関連企業の公式情報ではないことに注意してください。

現在、XHTML 1.0 (もどき)から、HTML5なコンテンツに修正中です。古い日記は修正が完了していませんので表示が崩れます。 順次、修正していく予定ですのでしばらくお待ちください。

もずはっく日記(2005年11月)

2005年11月18日

Bug 4753 MFCEmbedのURLバーでIMEが無効のままになる
初回投稿日時: 2005年11月18日02時50分43秒
カテゴリ: Mozilla Core
SNS: (list)

えむけいさんが確認、修正してくれた。さんくす!!

私は無効化にはWINNLSEnableIMEを使っていたのだが、これはWin3.x時代に使われていた廃止されたAPI。MSDNからも削除されていたのだが(つまり今となっては隠しAPI)、私が他にIMEを無効化するAPIを知らなかったことと、DelphiのVCLがこれを利用していたことが、このAPIを使う理由になっていた。

えむけいさんによると、ImmAssociateContextで代用できるとのこと。このAPIそのものの存在は知っていたが、MSDNの説明を見てもその使い道を理解できていなかった。コンテキストの関連づけを解除するということが、IMEを利用できなくなる、ということだったわけだ。

VCLがこの廃止されたAPIを使い続けている理由はなんだろうか? ImmAssociateContextだと、Windowsの特定のバージョンでは問題がある、とかいうのでなければ良いのだが。

ちなみに、WINNLSEnableIMEは引数にウインドウハンドルを持っているが、えむけいさんの情報によると、ウインドウ単位ではなく、プロセス単位でIMEをコントロールしているらしい。どおりで、デバッグ中に、私の意図通りに動いていなかった訳だ。(今思えば、コモンダイアログで期待通りの挙動にならなかった時点で気づくべきだった。)まだまだ勉強と洞察力が足りないなぁと反省させられた。

関連するかもしれないエントリ

bug 4753を含むエントリ