2016-04-12 6 views
0

これは私の要求です。Windowsでのディレクトリ検索の仕組みは?

私は1つのテキストボックスを与えているので、ユーザーはフォルダパスを入力する必要があります。 ユーザーを助けるために、テキストボックスに最初のフォルダ構造 "C:\"を書き込むときに、そのパスで使用可能なすべてのフォルダを表示したいとします(Windowsの実行時にすべてのディレクトリ構造を取得するのと同じ方法")。 C++のコードスニペットは大きな助けになるでしょう。

ありがとうございます。

AKJ。

+2

私はあなたのためにそれをgoogled、ここ[ドキュメント](https://msdn.microsoft.com/en-us/library/windows/desktop/bb776884%28v=vs.85%29.aspx?f=255&MSPPError) = -2147217396)。私は「提案」などの検索を開始したが、グーグルの「オートコンプリート」は終わった。情報を見つけることは不可欠なスキルなので、私はそれを練習することをお勧めします。具体的な質問に対する具体的な答えよりもはるかに役立ちます。 –

答えて

3

オートコンプリート機能はシェルに組み込まれており、クライアントが利用できます(Using Autocomplete参照)。オートコンプリートは、任意の標準編集コントロールで使用できます。オートコンプリートを有効にするには、単にSHAutoCompleteを呼び出す:

bool EnableAutoComplete(HWND hWndEdit) { 
    if (SUCCEEDED(::SHAutoComplete(hWndEdit, SHACF_FILESYS_DIRS))) 
     return true; 
    return false; 
} 

SHAutoCompleteフラグ多数のオートコンプリートの動作をカスタマイズすることが可能になります。オプションが要件に合致しない場合は、カスタムオートコンプリートソースを実装し、提案を完全に制御できます(How to Enable Autocomplete Manually参照)。

+0

こんにちは、あなたが提案したコードを追加しました。しかし、私は出力を得ていません。コードは以下の通りです。 \t CWnd * pCBEdit = myCOmbo.GetDlgItem(1001); \t HWND h_handle = pCBEdit-> GetSafeHwnd(); \t if(SUCCEEDED(SHAutoComplete(h_handle、SHACF_FILESYS_DIRS))) \t \t AfxMessageBox(L "DOne"); メッセージボックスが表示されます。ユーザーが「C:\」と入力すると、すべての利用者を表示したいと思います。可能なすべてのフォルダをいくつかの構造体に追加し、メソッドの呼び出しでそれを表示する必要がありますか?私はコンボボックスを使用しています。 – AKJ

+0

@AKJあなたのキャストは間違っています。また、ComboBoxではなく、Editボックスを使用する必要があります。またはComboBoxExを使用して、リンク先の情報を参照してください。 –