オートコンプリートを実装するには?

解決


JULIO  2005-05-02 17:32:12  No: 89678  IP: [192.*.*.*]

VB初心者です。(WindowsXP/VB6.0)
テキストボックスにオートコンプリート機能を実装させたいと思っています。
いろいろ調べたのですが、Shlwapi.dllを利用したURLのケースと
CB_FINDSTRINGを利用したケースがありました。
CB_FINDSTRINGはボックス内でオートコンプリートを実現するようなので、Shlwapiのように入力単位で候補を下部に表示するようなインターフェース
がよいと思っているのですが、URL履歴ではなく独自のデータを使用して
実装することはできないのでしょうか?

<サンプル>
Declare Function SHAutoComplete Lib "Shlwapi.dll" _
  (ByVal hwndEdit As Long, ByVal dwFlags As Long) As Long
Public Const SHACF_URLHISTORY = &H2
Public Const SHACF_URLMRU = &H4
Public Const SHACF_URLALL = (SHACF_URLHISTORY Or SHACF_URLMRU)

Private Sub Form_Load()
   Dim lRtn As Long
   lRtn = SHAutoComplete( Text1.hWnd, SHACF_URLALL)
End Sub

以上、よろしくお願いします。

編集 削除
K.J.K.  2005-05-02 19:53:46  No: 89679  IP: [192.*.*.*]

IAutoComplete、IEnumStringインターフェースについて調べてください。
# IEnumStringをImplementsする必要があります。

編集 削除
JULIO  2005-05-03 01:44:00  No: 89680  IP: [192.*.*.*]

K.J.K.さん。助言ありがとうございます。
いろいろ調べたのですが、下記サイトに詳細がありました。
http://www.runan.net/program/tips/sdk_17_IAutoComplete.shtml
しかし、残念ながら自分が初心者であること、C++の知識はないこと
などなどが原因でうまく活用ができませんでした。
本件はVB(初級レベル)だけの知識では実現できないのでしょうか?

編集 削除
K.J.K.  2005-05-03 13:31:29  No: 89681  IP: [192.*.*.*]

「できるかできないか」は、やってみなければわからないのでは。

編集 削除
K.J.K.  2005-05-03 13:33:14  No: 89682  IP: [192.*.*.*]

そもそも、私が提示した方法以外もありえるでしょうし。
独自にポップアップウィンドウを作成して、そこで選択肢を
表示する、というのを直接自分で実装してもいいのですし。

編集 削除
JULIO  2005-05-03 14:45:34  No: 89683  IP: [192.*.*.*]

上記のページのサンプルと同様のインターフェースを実現したい場合は
VBだけで実現できますか?
ちなみにC++は知識だけでなくソフトウェアもないのですが・・・。

編集 削除
K.J.K.  2005-05-03 15:45:09  No: 89684  IP: [192.*.*.*]

COMについての知識があれば、VB6のみで実装は可能です。
VB6のCDに入っているMkTypLin.exeを使ってタイプライブラリを
作成すれば多少は楽になりますが、必須ではありませんし。

編集 削除
K.J.K.  2005-05-04 01:23:21  No: 89685  IP: [192.*.*.*]

とりあえずサンプル。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/AutCmp01.lzh
TextBoxが空白のときに上矢印(↑)か下矢印(↓)キーを押せば、
都道府県の一覧のリストが表示されると思います。

編集 削除
JULIO  2005-05-04 10:53:09  No: 89686  IP: [192.*.*.*]

K.J.K.さん
サンプルのご提供ありがとうございました。
完成はしていませんが、頂いたサンプルをもとに
いろいろやってみたいと思います。
初心者にお付き合い頂きありがとうございました。
また何かあったらご助言お願い致します。

編集 削除