Eingabe eines Dateipfades mit Hilfe von CFileDialog
-
Hallo !
Ich möchte mit der Klasse "CFileDialog" eine Dateipfad auswählen. Dies funktioniert auch soweit, allerdings muß ich im Dialog auf eine Datei klicken, damit nach Beendigung des Dialoges der Pfad (und natürlich auch die Datei) als Variable zu Verfügung steht.
Das Problem ist nun, wenn im Verzeichnis keine Datei abliegt, dann kann ich den Dialog auch nicht mit "Öffnen" verlassen und bekomme somit auch nicht den Dateipfad.
Hat jemand eine Abhilfe ?Gibt es vielleicht eine andere Möglichkeit nur einen gültigen Pfad mit Hilfe eines "fertigen" (sprich Klasse) Dialoges einzugeben ??
Besten Dank für Eure Hilfe !!
Gruß Michael
-
such mal nach SHBrowseForFolder()
-
Hast Du vielleicht auch ein "Stück" Code ??
-
Hab's gefunden:
BROWSEINFO bi; TCHAR szDisplayName[MAX_PATH]; LPITEMIDLIST pidl; LPMALLOC pMalloc = NULL; ZeroMemory(&bi, sizeof(bi)); bi.hwndOwner = NULL; bi.pszDisplayName = szDisplayName; bi.lpszTitle = TEXT("Select folder"); bi.ulFlags = BIF_RETURNONLYFSDIRS; pidl = SHBrowseForFolder(&bi);
BESTEN DANK !!!
-
Aber wie komme ich nun an den ausgewählten Dateipfad ???
-
Machmal bin ich selber schneller
if ( pidl != 0 ) { // get the name of the folder TCHAR path[MAX_PATH]; if ( SHGetPathFromIDList ( pidl, path ) ) { MessageBox(path); } // free memory used IMalloc * imalloc = 0; if ( SUCCEEDED( SHGetMalloc ( &imalloc )) ) { imalloc->Free ( pidl ); imalloc->Release ( ); } }
-
Original erstellt von M_kuenzler:
**Machmal bin ich selber schneller
**lässt uns ja auch garkeine Chance dir zu helfen:p
-
... aber der Tip mit
SHBrowseForFolder()
war schon sehr gut !!
-
:D:p
-
Hallo!
Mit SHGetPathFromIDList bekomme ich bspw. C:\ ...
Gibt es eigentlich auch eine Moeglichkeit das Label des Laufwerkes auszulesen??
also bsp. Festplatte( c:/) so wie es im Explorer dargestellt wird???Waere ueber einen Tip sehr dankbar!!!
Matthias
[ Dieser Beitrag wurde am 02.10.2002 um 16:23 Uhr von na_ich editiert. ]