CFileDialog (save as) - File Extension automatisch anhängen
-
Ich habe folgendes Problem, ich definiere einen CFileDialog:
CFileDialog oeffnenDlg(false,NULL,NULL,NULL, "bmp-Dateien|*.bmp; *.bmp|Alle Dateien|*.*||");nun gibt GetPathName() den Pfad/Dateinamen ohne Extension zurück, GetFileExt() liefert auch NUR die Ext. zurück wenn sie von Hand eingetippt wurde. Ich möchte aber wie üblich dass die Extension automatisch angehängt wird (auch wenn .jpg in den Filter aufgenommen wird und ausgewählt dass dann automatisch .jpg übernommen wird). Wie kann ich das bewerkstelligen?
Vielen Dank
-
Aber GetPathName brint doch den kompletten Pfad inkl. extension zurück, oder is das bei mir nur so
Gruß Matthias
-
Das ist vollkommen richtig, weil Du als Default Extension (zweiter Parameter) nichts angegeben hast. Wenn Du dort einfach "bmp" angibst, dann wird auch diese Extension automatisch angehängt. Siehe Doku in der MSDN
-
Danke; ja das habe ich mir gedacht wegen der default ext. Doch wenn ein Benutzer bei Filter dann jpg angeben würde (wenn ich den einbaue), dann wird wohl trotzdem bmp angehängt?
-
Ich habe es so im Kopf:
Wenn der User eine Datei auswählt gibt es kein Problem.
Wenn der User einen Namen angibt und keine Extension hinzufügt, dann wird die default Extension verwendet.
Hast Du zusätzlich mehrere Filter z.B. : "TXT-Dateien|.txt|XML-Dateien|.xml|Alle Dateien|.||"
Dann wird zusätzlich der eingestellte Filter berücksichtigt und die entsprechende Extension von dort gewählt, wenn keine eingegeben wird. In meinem Beispiel wird bei eingestellten XML Filter die default Extension zu JPG. Bei Alle Dateien ist klar, dass die Default Extension zu derjenigen wird, die als 2 Parameter angegeben wurde.
-
Ahaaa also wenn ich dann JPG zum Filter hinzufüge wird der automatisch berücksichrigt, auch beim Eingeben eines Namens (was ja beim Speichern unter meist der Fall ist)? Das wäre ja gut.
Bei .NET hängt es die Extension auch an bemerkte ich gerade, als ich auch ein SaveFileDialog um Bilder zu speichern einsetzte.