Datei Speichern Common Dialog: Dateierweiterung bei Änderung des Dateityps

03/01/2008 - 22:04 von Wolfgang Rolke | Report spam
Bei vielen Programmen kann man ein Dokument in einem anderen Dateiformat speichern.
Wàhlt man dazu im Dialogfeld "Speichern unter..." ein anderes Format aus,
wird auch sofort beim Dateinamen die Erweiterung passend geàndert.
Diese "Automatik" ist sehr praktisch und wird vom Benutzer auch so erwartet.
Ich habe sie bisher über eine eigene Hook-Funktion implementiert.

Nun möchte ich das automatische Anpassen der Dateinamenerweiterung gemàß
selektiertem Dateiformat auch unter Windows CE (Embedded) implementieren.
Leider unterstützt die Funktion GetSaveFileName unter Windows CE keine Systemhaken.

Da z.B. die Microsoft-Anwendungen Pocket Word(pad) und Pocket Excel dennoch
die von mir gewünschte Funktionalitàt aufweisen, habe ich einfach mal eine
eigene Dialogfeldfunktion angegeben (of.lpfnHook). Diese wird auch beim richtigen
Ereignis mit einer WM_NOTIFY-Nachricht aufgerufen (nicht per WM_COMMAND, wie beim
Desktop-Windows). Leider unterscheiden sich die IDs der Dialogfeldelemente
(edt1, cmb1) von denen, wie sie in dlgs.h definiert sind. Leider haben sie sich
auch in unterschiedlichen Windows CE-Versionen geàndert.

Welche Möglichkeit habe ich also? Oder ist die Funktionalitàt bereits in der
Funktion GetSaveFileName implementiert und ich verwende sie nur falsch?

Das Feld of.lpstrDefExt sowie das Anhàngen der richtigen Dateierweiterung nach
Schließen des Dialogfelds ist (insbesondere bei Verwendung von OFN_OVERWRITEPROMPT)
leider auch keine saubere Lösung.

PS: Unter den speziellen Plattformen Pocket PC und Windows Mobile liefert die
Funktion GetSaveFileName wie gewünscht den Dateinamen gemàß selektiertem Typ
zurück. Bei diesen Plattformen wird die Dateierweiterung aber auch dem
Benutzer überall verborgen.

Gruß Wolfgang

xpost de.c.os.ms-w.progr && ms.pub.de.ger.wce.entw; fup2 de.c.os.ms-w.progr;
 

Lesen sie die antworten

#1 Arno Welzel
07/01/2008 - 12:07 | Warnen spam
Wolfgang Rolke wrote:

Bei vielen Programmen kann man ein Dokument in einem anderen Dateiformat
speichern.
Wàhlt man dazu im Dialogfeld "Speichern unter..." ein anderes Format aus,
wird auch sofort beim Dateinamen die Erweiterung passend geàndert.
Diese "Automatik" ist sehr praktisch und wird vom Benutzer auch so
erwartet.
Ich habe sie bisher über eine eigene Hook-Funktion implementiert.



Warum? Was stört Dich an den dafür vorgesehenen Eintràgen in der
OPENFILENAME-Struktur?

Das Feld of.lpstrDefExt sowie das Anhàngen der richtigen
Dateierweiterung nach
Schließen des Dialogfelds ist (insbesondere bei Verwendung von
OFN_OVERWRITEPROMPT)
leider auch keine saubere Lösung.



Warum?

Oder anders gefragt: Was hat dein Hook denn anders gemacht, als es
GetSaveFileName() tut?




http://arnowelzel.de
http://de-rec-fahrrad.de

Ähnliche fragen