2016-04-12 15 views
0

Hier ist meine Anforderung.Wie funktioniert die Verzeichnissuche in Windows?

Ich gebe ein Textfeld, Benutzer müssen den Ordnerpfad eingeben. Um den Benutzern zu helfen, wenn sie die erste Ordnerstruktur "C: \" in Textfeld schreiben, möchte ich alle Ordner anzeigen, die in diesem Pfad verfügbar sind (gleiche Weise, wie wir die gesamte Verzeichnisstruktur erhalten, wenn wir "Windows ausführen" verwenden) "). Jedes Code-Snippet in C++ wird eine große Hilfe sein.

Vielen Dank im Voraus.

AKJ.

+2

Ich googelte es für Sie, hier ist die [Dokumentation] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb776884%28v=vs.85%29.aspx?f=255&MSPPError = -2147217396). Ich fing an, "Vorschläge" zu googeln und so weiter, aber am Ende googeln "Autocomplete". Das Finden von Informationen ist eine unerlässliche Fähigkeit, also schlage ich vor, dass Sie darin trainieren: Es wird Ihnen viel mehr als jede konkrete Antwort auf die konkrete Frage helfen. –

Antwort

3

Die Autocomplete-Funktion ist in die Shell integriert und für Clients verfügbar (siehe Using Autocomplete). Autocomplete kann mit jedem Standard-Bearbeitungssteuerelement verwendet werden. So aktivieren Sie die automatische Vervollständigung nur SHAutoComplete nennen:

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

SHAutoComplete ermöglicht eine große Anzahl von Flags, die zur automatischen Vervollständigung Verhalten anzupassen. Wenn keine der Optionen Ihren Anforderungen entspricht, können Sie Ihre benutzerdefinierte Autovervollständigungsquelle implementieren und die vollständige Kontrolle über die Vorschläge erhalten (siehe How to Enable Autocomplete Manually).

+0

Hallo, ich habe den von Ihnen vorgeschlagenen Code hinzugefügt. Aber ich bekomme keine Ausgabe. Code ist wie unten, \t CWnd * pCBEdit = myCOmbo.GetDlgItem (1001); \t HWND h_handle = pCBEdit-> GetSafeHwnd(); \t if (ERFOLGREICH (SHAutoComplete (h_handle, SHACF_FILESYS_DIRS))) \t \t AfxMessageBox (L "DOne"); Meldungsfeld wird angezeigt. Ich möchte alle verfügbaren Foler anzeigen, wenn Benutzer "C: \" eingeben. Muss ich alle möglichen Ordner in eine Struktur einfügen und sie beim Aufruf der Methode anzeigen? Ich benutze Combobox. – AKJ

+0

@AKJ Dein Casting ist falsch. Und Sie sollten ein Bearbeitungsfeld verwenden, nicht ComboBox. Oder verwenden Sie ComboBoxEx, lesen Sie den Link für Informationen. –