Was änliches wie CFileDialog



  • Hallo,

    gibt es ein Dialogfeld, oder etwas anderes, mit den mann einen Ordner auswelen kann (keinne Datei) und den Pfad zurüg bekont?

    Danke für die Hilfe!

    MFG TaccoGo



  • Das geht mit SHBrowseForFolder :

    BROWSEINFO bi = { 0 }; 
    bi.lpszTitle = _T("Bitte wählen Sie das gewünschte Verzeichnis :"); 
    LPITEMIDLIST pidl = SHBrowseForFolder (&bi); 
    if (pidl != 0) 
    { 
       TCHAR path[MAX_PATH]; 
       if (SHGetPathFromIDList(pidl, path)) 
       { 
          //AfxMessageBox(path); 
       } 
    
       IMalloc * imalloc = 0; 
       if (SUCCEEDED(SHGetMalloc(&imalloc))) 
      { 
        imalloc->Free (pidl); 
        imalloc->Release(); 
      } 
    }
    

    Gruß
    :: NoName ::



  • Danke!! 🙂

    das hat Super Funktionirt.

    MFG TaccoGo



  • Hallo,

    noch ne verspätite frage.
    wie kann ich bei den code da oben einen phad vorgeben bzw den phad wo er als letzes war??

    MFG TaccoGo



  • das würde mich auch mal interessieren.. Wenn ich das Prinzip richtig verstanden habe, könnte ich doch in der Struktur BROWSEINFO den Wert für pidlRoot vorbelegen. Wie ich die Pidl für spezielle Ordner herausbekomme ( z.B. Desktop, etc.. ) meine ich auch irgendwo herausgefunden zu haben. Wie ich diese allerdings zu einem bestimmten Ordner ermittle ist mir nicht klar..

    Weiss jemand Rat?



  • Pointer to an ITEMIDLIST structure (PIDL) specifying the location of the root folder from which to start browsing. Only the specified folder and any subfolders that are beneath it in the namespace hierarchy will appear in the dialog box. This member can be NULL; in that case, the namespace root (the desktop folder) is used.

    Ok, wenn nur DIESER Ordner und alle Unterordner angezeigt werden, hilft mir das ja auch nicht weiter...

    Gibt es eine andere Möglichkeit?



  • wenn du etwas ähnlich wie CFileDialog suchtst , dann baue die ne klasse , erbe von CFileDialog und überschreibe ein paar passende fkt.



  • Schaut doch bitte mal in FAQ, das kann nicht Schaden ! 🙄

    Devil



  • naja das mit der funktion oben ist schon gut so.
    aber ich möchte nur das der lätzte phad beim neu öffne gleich wider offen ist.

    MFG TaccoGo



  • dito



  • Es ist ja nicht so, dass ich die ganzen Hilfen nicht schon durchforstet hätte.. Mein Problem ist einfach, dass ich mittels CFileDialog keine Ordner auswählen kann. Das Vorbelegen ist hier nicht das Problem. Auf der anderen Seite kann ich beim SHBrowseForFolder nicht sagen, welcher Ordner geöffnet werden soll...

    Richtig?

    Christian
    (Vormals Wissbegieriger)



  • genau wen man mit CFileDialog orndner öffnen könnte wer das kein proplem.
    aber da das nicht get der code oben.

    aber wie forbelegen in den FAQ habe ich auch plos was zum CFileDialog gefunden.

    MFG TaccoGo



  • hy ,

    was meinst du mit :
    ..mit CFileDialog orndner öffnen könnte..
    du willst keine datei wählen , richtig ? warum soll das denn nicht gehen ?



  • Naja, wenn man im CFileDialog auf öffnen klickt, wird nicht der Ordner ausgewählt... Ein Flag kann ich nirgends setzen um das umzustellen (jedenfalls finde ich es nicht).



  • bei CFileDialog wirt immer nur eine datei ausgewält

    MFG TaccoGo



  • @Little_Bird :
    es ist zwar richtig dass beim öffnen klicken normalerweise ein file gewählt sein muss aber , du kannst doch selbst bestimmen was er bei OnOK() machen soll
    der ordner steht doch als file da , musst nur den string kürzen..
    (substring usw.)

    @TaccoGo: da gibt es sowas wie allowmultiselect oder ähnlich .. damit kann man mehrere dateien gleichzeitig öffnen



  • ich möchte auch nur den ordner.

    das mit den strin kürtzen get aber nicht den ok zu kliken muss ich eine datei wälen aber in den ortner sind nut wietere ortner und keine dateien.

    MFG TaccoGo



  • Hallo WuTangl!

    Erstmal vielen Dank für Deine Bemühungen!

    Den String würde ich ja kürzen, davon bekäme der Benutzer ja nix mit --> Es geht aber nicht, dass der Anwender des Programms eine Datei auswählen muss, wenn er doch eigentlich einen Ordner auswählen soll. Immerhin gibt es auch Ordner, in denen zunächst einmal keine Dateien sind..

    Nein, das ist keine Lösung.



  • Hallo,

    kent keiner ne lösung vür das problen???? 😕 😕

    ich habe in der BROWSEINFO striktur den pidlRoot wert versucht zu fülle aber das klapt nicht gans.

    MFG TaccoGo



  • Guten Morgen TaccoGo !

    Folgendes: Ich habe es jetzt geschafft den Wert für pidlRoot mit meinen gewünschten Ordner vorzubelegen. ( Über das das IShellFolder-Interface mit ParseDisplayName() [siehe hier]).

    Nur ist das nicht ganz was ich mir vorgestellt hatte... denn so kann man in der Verzeichnisstruktur nur noch unterhalb des vorbelegten Ordners browsen ( ist ja auch logisch, wenn der als Root festgelegt wird ).

    Also der Weg muss über den CFileDialog gehen. Und hier gibt es mit Sicherheit auch eine Lösung, denn wenn ich mit dem Studio ein neues Projekt anlege, muss ich mit eben diesem Dialog auch einen Ordner auswählen - da geht das also ganz wunderbar.

    Kann doch nicht angehen, dass das keiner hier weiss 😃 😉

    so long, Christian


Log in to reply