Pfad öffnen
-
Hi,
ich hab ein Problem.
Kann mir jemand hier sagen, wie ich es fertig bringe, das der Benutzer einen Pfad auswählen kann?
Zur Zeit benutze ich:
CString Destination; CFileDialog dlg(true,0,0,NULL,0,this); dlg.DoModal(); Destination = dlg.GetPathName();
Damit lässt sich aber nur eine Datei auswählen, ich möchte aber lediglich einene Pfad haben.
Hat da jemand Rat?
-
Das steht in den FAQ:
Aufruf des Ordnerauswahl-Dialogs
http://www.c-plusplus.net/forum/viewtopic.php?t=39127...leider ist der Beitrag anscheinend im Eimer, daher noch mal extra:
// Ordner auswählen BROWSEINFO info = {0}; info.lpszTitle = "Triff deine Wahl:"; CString strPfad; char cPfad[MAX_PATH]; LPITEMIDLIST list = SHBrowseForFolder(&info); if(list != NULL) { SHGetPathFromIDList(list, cPfad); } else { return; } strPfad = cPfad; AfxMessageBox(strPfad);
-
Kewl danke......
Hätte da noch eine Frage, wie ist es nun möglich, alle Dateien aus diesem Ordner zu bekommen (+Unterordner) und diese gegebenenfalls auch noch nach Endungen aussortieren zu lassen......
-
Steht ebenfalls in den FAQ und funktioniert auch noch:
Alle Verzeichnisse sowie Dateinamen ausgeben?
http://www.c-plusplus.net/forum/viewtopic.php?t=39130
Sortierfunktion weiss ich im Moment auch nicht...
-
SO cih habs mir angeschaut, leider aber nciht ganz verstanden.
Wi füge ich denn nun diese FUnktion ein und wie rufe ich diese auf? Ich möchte es mittels MFC machen.
Ich habe nun ja eine Variable die den Startordner angibt (vom Benutzer ausgewählt)...
-
Kopier das ganze Ding an das Ende deiner cpp-Datei. Dann änderst du bei
int threadklasse::ladefiles(CString nextdir)
das Wort threadklasse um in den Namen deiner Klasse, so wie das auch bei den ganzen anderen Funktionen (z.B. OnInitDialog()) so dasteht. Dann fügst du in der Header-Datei ein
int ladefiles(CString nextdir);
Jetzt solltest du die Funktion aufrufen können. An der Stelle, an der du dir den Pfad geholt hast, schreibst du jetzt dahinter
ladefiles( DieVariableInDerDeinPfadZuDemOrdnerDrinIst );
Das sollte reichen.
Und damit du mal siehst, was da genau passiert, rate ich dir zu ein paar MessageBoxen und zwar so (also an dieser Codestelle):if (ftpFind.IsDirectory() != 0) { nextdir = curdir + "\\" + appname; AfxMessageBox(nextdir); ladefiles(nextdir); // <-------------------------- hier ruft sich das Teil selbst auf ! } else { // In appname steht der Filename // Mit ftpFind.GetFilePath()); bekommt man den Pfad und den Filenamen AfxMessageBox(appname); }
So, ich hoffe das klappt.
HEY, WER STEHT DENN DA VOR MEINER TÜR ?
Ach so, ist nur das Wochenende.
Bin weg.