Ordner auswählen



  • Hallo!

    In vielen Programmen kann der Nutzer einen Ordner über ein Fenster auswählen, der dann z.B.zum speichern von Dateien genutzt wird.

    Ich will auch so eine Komponente in mein Programm einfügen. Ich habe schon in der msdn geforscht, aber nur Artikel über Windows forms gefunden. Gibt es auch eine andere Möglichkeit ohne Windows forms so ein Ordner-Zugriffs-Fenster zu programmieren?



  • Für den normalen Save File Dialog s. Open and Save As Dialog Boxes.
    Und für die Auswahl eines Ordners SHBrowseForFolder.



  • Vielen Dank für die Links zur msdn.
    Ich habe auch gleich probiert, ob es klappt.
    Es ließ sich auch tatsächlich ein Ordner auswählen,aber anstatt den Ordnerpfad in einen string zu speichern, stützte das Programm ab.
    Ich glaube, dass dieser Teil des Quellcodes dafür verantwortlich ist:

    case WM_RBUTTONDOWN:
    {
    LPWSTR Text = L"";
    SetWindowTextA(FindeA((aHWND&)hInf), "a");
    LPBROWSEINFOW lpbi = new _browseinfoW;
    lpbi->hwndOwner = hwnd;
    lpbi->iImage = NULL;
    lpbi->lParam = NULL;
    lpbi->lpfn = NULL;
    lpbi->lpszTitle = L"a";
    lpbi->pidlRoot = NULL;
    lpbi->pszDisplayName = NULL;
    lpbi->ulFlags = NULL;
    SHGetPathFromIDListW(SHBrowseForFolderW(lpbi), Text);
    MessageBox(hwnd, Text, L"a", 0);
    neuBesetzt = true;
    return 0;
    }

    Vielleicht liegt es daran, dass mein Englisch nicht so gut ist. Im Englischunterricht lernen wir zwar viele Vokabeln über Gemüse und Schreibgeräte, aber nichts, was zur Entschlüsselung von msdn Texten taugen würde.



  • This buffer must be at least MAX_PATH characters in size.

    Der Puffer, auf den dein Text zeigt, ist wie groß?



  • Danke, jetzt hat es geklappt.
    Ich habe die Zeile:
    LPWSTR Text = L"";
    durch:
    wchar_t Text[_MAX_PATH];
    ersetzt.
    Dein Tipp hat mich drauf gebracht, und jetzt funktionierts.


Log in to reply