オートコンプリートを実装する
VS.NETを使っているとインテリセンスが大変便利です。インテリセンスの基礎となっているオートコンプリートはCOMとして機能がOSに搭載されているので、呼び出してやれば簡単に実装できます。
URLやファイル名だけのオートコンプリートはさらに簡単。.NETでいきまっしょいのid:santamartaさんが、
http://d.hatena.ne.jp/santamarta/20041205
に書いています。すばらしい!
URLやファイル名だけのときはこれが機能豊富でベストなのですが、あらかじめ決まった文字列でオートコンプリートしたいときは IAutoComplete と IAutoComplete2 を使う必要があります。こいつらに IEnumString を渡してやればOKです。
IEnumString は System.Runtime.InteropServices に UCOMIEnumString としてインターフェイスが用意されています。後は IAutoComplete 周りなのですが、VBForums.comにきっちり動くコードを発見しました。
http://www.vbforums.com/showthread.php?p=1619910#post1619910
ばっちり動くので、ライブラリとして使ってしまえばそれだけでOKですね!
ちなみに、私はこのコードが一部理解できませんでした…。COMとの相互運用部分がまだあんまり分かってないです。IAutoCompleteを取ってきてInitを呼ぶのはいいんですが、IAutoComplete2に変換するような処理なしでそのままSetOptionsを呼べちゃうのが理解不能です。
IAutoComplete2 インターフェイスの定義にも IAutoComplete の Init と Enable が含まれているし…。
COMがいまいちよく分かってませんが、とりあえずこれでオートコンプリートできますね〜!
(追記:GUIDは正しかったので、指摘箇所を削除しました)