nach dem Speichern, kann ich keine Datei mehr öffnen



  • Hi,

    hab ein kleines Problem mit der Speicher- und Öffnen-Funktion unter MFC.

    Nachdem ich etwas in eine Datei (123.txt) geschrieben habe (OnSaveDocument), wird mir der Open-Dialog (Menü->Open) nicht mehr angezeigt. Ruf ich zu Beginn sofort den Menüeintrag Menü->Open auf, so wird mir der Open-Dialog auch angezeigt. Hat jmd von euch ne Ahnung an was das liegen kann?

    OnSaveDocument()

    CString m_sDataPathName = "123.txt";
    	int speicher=12; 
    	CFileException fe; 
    	CFile* pSaveFile = NULL; 
    	pSaveFile = GetFile( (LPCTSTR)m_sDataPathName, CFile::modeCreate | 
    	CFile::modeReadWrite | CFile::shareExclusive, &fe ); 
    
    	CArchive saveArchive( pSaveFile, CArchive::store ); 
    	saveArchive.m_pDocument = this; 
    	saveArchive.m_bForceFlat = FALSE;
    
        saveArchive << speicher; 
    
        saveArchive.Flush( ); 
    	saveArchive.Close( ); 
    	//ReleaseFile( pSaveFile, FALSE );
    	pSaveFile->Close(); 
    
    return True;
    

    Im Hauptfenster hab ich die ID fürs öffnen zur Message-Map hinzugefügt:

    BEGIN_MESSAGE_MAP(CTestApp, CWinApp)
    	ON_COMMAND(ID_FILE_OPEN, &CWinApp::OnFileOpen)
    END_MESSAGE_MAP()
    

    Gruß
    Hans-Jörg


  • Mod

    Und warum machst Du das so kompliziert und überschreibst nicht einfach nur die Serialize Funktion im CDocument?

    Ansonsten was heißt geht nicht, oder lässt sich nicht öffnen?
    Fehler? Debugger? Crash?



  • Martin Richter schrieb:

    Und warum machst Du das so kompliziert und überschreibst nicht einfach nur die Serialize Funktion im CDocument?

    Ansonsten was heißt geht nicht, oder lässt sich nicht öffnen?
    Fehler? Debugger? Crash?

    es passiert einfach gar nichts, wenn ich auf den Menüpunkt (Datei->Öffnen) gehe - es geht kein Fenster bzw. der Open-Dialog auf etc.

    Welchen part des Codes kann ich denn in die Serialize Funktion von CDocument packen? Bzw. was würde sich dadurch vereinfachen?

    Gruß
    Hans-Jörg


  • Mod

    Vielleicht solltest Du erst einmal anfangen zu versuchen die MFC zu verstehen.

    Wenn Du nur Serialize überschreibst sorgt die MFC für den Rest.

    Die Frage ist also eher, was hast Du mit Deinem Code bezweckst? 🤡


Anmelden zum Antworten