OWN_MULTISELECT: Wie unterscheiden
-
Hi,
wenn ich einem GetOpenFileName-Dialog das Flag OFN_MULTISELECT gebe, dann kann der Benutzer mehrere Dateien auswählen. Aber das prob ist, wie ich unterscheiden soll, ob der nutzer nun mehrere Dateien gewählt hat. ansonsten nähmlich ist da ein normaler Pfad, sonst ein nullen-getrenntes gerüst. In der msdn steht auch nix.
if (...) // multiselect
sowas brauche ich.
Danke.
-
Script-Styler schrieb:
In der msdn steht auch nix.
MSDN schrieb:
If the OFN_ALLOWMULTISELECT flag is set and the user selects multiple files, the buffer contains the current directory followed by the filenames of the selected files.
-> For Explorer-style dialog boxes, the directory and filename strings are NULL separated, with an extra NULL character after the last filename.
-> For old-style dialog boxes, the strings are space separated and the function uses short filenames for filenames with spaces.
Was heißt, daß das durch 'nullen-getrentes Gerüst' die ausgewählten Dateinamen darstellt.
-
aber, um die Dateinamen einzeln zu erhalten, muss man doch den String so umbauen, dass man das 1. und je nach dem das 2. 3. oder 4. teil zusammensetzt, um den Pfad zu erhalten. Ich möchte aber prüfen ob ich das machen muss, wenn der nutzer eine Datei selektiert hat, ist der Pfad nähmlich schon fertig.
Danke.
-
Ich verstehe nicht was Du willst. Du bekommst komplette Pfade gelifert, die durch 0 abgeschlossen werden und durch eine Doppel-Null das Ende kennzeichnen.
Essind immer komplette Pfade, da ist nichts zusammenzusetzen.
-
nein, das ist net wahr.
das sieht so aus:
Bei mehrfachem selektieren:
C:\ordner\0datei1.txt\0datei2.txt\0\0
bei einfachem selektieren:
C:\ordner\datei1.txt\0wie soll ich denn da überprüfen, wie das zusammengesetzt ist?
Danke.
-
OK! Aber Du kannst doch _splitpath verwenden, oder beim ersten Pfad PathFindFileName und dann den Pfad mit den anderen Dateienamen zusammensetzen...
-
Script-Styler schrieb:
Bei mehrfachem selektieren:
C:\ordner\0datei1.txt\0datei2.txt\0\0bei einfachem selektieren:
C:\ordner\datei1.txt\0GetOpenFileName () liefert im Member 'nFileOffset' der (harmlos) 'Struktur' genannten OPENFILENAME-Monströsität die Länge des Pfades zurück.
-> Wenn also die Stringlänge von Member 'lpstrFile' größer ist als der 'nFileOffset', dann hat der User nur _eine_ Datei ausgewählt.