Open/Save-Dialog
-
Ich habe eine SDI-Anwendung und habe da ein paar Probleme mit dem Öffnen-Speicher-Dialog. Unter Serialize kann man ja direkt auf das Archiv etc. zugreifen und so, ich möchte aber nur den Dateinamen vom Dialog übernehmen und den Rest selbst erledigen. Beim Öffnen kein Problem, beim Speichern schon: Denn immer nach dem ich die ganzen Daten gespeichert hat, löscht CArchive die Datei, weil sie da ja selbst etwas reinschreiben will. Effekt: leere Datei. Hier der Code:
/////////////////////////////////////////////////////////////////////////////
// CFiredevDoc Serialisierungvoid CFiredevDoc::Serialize ( CArchive& ar )
{
if (ar.IsStoring())
{
CFile* file = ar.GetFile();
CString str = file->GetFileName();
char filename[30];
strcpy( filename, str );m_oGL.PManager.Save( ar ); // eigenes Speichern
}
else
{
CFile* file = ar.GetFile();
CString str = file->GetFileName();
char filename[30];
strcpy( filename, str );m_oGL.PManager.Load( filename ); // eigenes Laden
}
}Das zweite Problem betrifft die Anzeige des Öffnen-Speichern-Dialogs. Wo kann ich einstellen, dass nur Dateien mit einer bestimmten Endung angezeigt werden?
greetz
urbi
-
Hi,
beim ersten Problem kann ich Dir nicht helfen.
Beim Zweiten:CFileDialog instanzieren:
CFileDialog *dateiOeffnen;
dateiOeffnen=new CFileDialog(TRUE,"Öffnen","Rueckmelde.txt",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,".txt",this);epidemic
-
Das hatte ich auch

Such mal mit dem Explorer im VC6(?)-Ordner
nach *.cpp (Dateien/Ordner) ::DoSave Enthaltener Text.Dort findest du den CArchiv-Übeltäter. Kopiere den Block
(kann z.Z. nicht genau sagen welcher, da ich hier keinen VC
zur Hand habe
) in deine CPP-Datei, und passe die Funktion
nach deine Bedürfnissen an (Schmeiß CArchiv einfach raus
).Damit könntest du das Dokumenten-Format leicht auf Ini/XML
(oder was auch immer) änderen.Gruß Andreas