"Save" manuell auslösen



  • Hey, nochmal ne Frage...

    Wie kann ich den "Save"-Befehl manuell auslösen. Ich hätte gerne, dass meine Eingaben automatisch in ein bestimmtes File (Name wird vorgeben) gespeichert werden und sich das Programm dann so verhält wie man den Knopf/Menueintrag gedrückt hätte.
    Wenn ich es über CFile/Serialize mache, wird der Fentertitel und die History nicht aktualisiert!

    Weiss jemand was genau passiert wenn ich Speicher drücke?



  • AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_SAVE);
    


  • Dann geht aber ein Dialog auf der nach dem Dateinamen fragt. --> Denn habe ich aber schon



  • Dann liegt das an deiner Speichernfunktion. Wie heißt denn der Menüpunkt, den du "drücken" willst?
    Tausch doch mal ID_FILE_SAVE dagegen. 🙂



  • Vielleicht habe ich mich falsch ausgedrückt:

    Ich will das Doc an einer bestimmen Stelle speichern, OHNE das vorher "Speichern unter..." gedrückt wurde. Der Dateiname wird aus dem Projektdaten zusammengesetzt.

    Wenn ich jetzt

    AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_SAVE);
    

    aufrufe, wird ja zuerst der "Speichern unter..." Dialog angezeigt (ist ja eigentlich auch richtig, nur in diesem Fall nicht...)



  • Ich habe dich schon richtig verstanden. 🙂

    Das Problem ist, dass du eine Funktion anders nutzt, als ihr Name vorgibt.
    ID_FILE_SAVE: Name ist bekannt, einfach nur speichern. (Strg+S im VS)
    ID_FILE_SAVE_AS: Name ist unbekannt, muss eingegeben werden, danach genauso wie ID_FILE_SAVE.

    Du hast gefragt, wie man einen Menüpunkt von Hand anschubst, das habe ich beantwortet. Leider hast du keinen passenden - also bastel einen. 😉

    Zeig doch mal den Code zum Speichern, vielleicht kann man das anpassen. 🙂

    PS: Bin aber gleich weg...



  • Folgender Code zum speichern (in CDoc-Klasse):

    //Hier wird dem Doc der FileName untergeschoben
    m_strPathName = szProjectFile;
    
    //Jetzt speichern...
    AfxGetMainWnd()->SendMessage(WM_COMMAND, ID_FILE_SAVE);
    


  • Und im MainFrame? Das was du aufrufst passt ja nicht.



  • m_strPathName ist eine Member von CDoc. Im MainFrame wird (meines Wissens) nur wieder eine Methode von CDoc aufgerufen!



  • Dann musst du mal nachgucken, die Mechanismen kenne ich noch nicht... 😞



  • Ich habs!

    Geht eigentlich ganz einfach (wenn mans weiß):

    SetPathName(szProjectFile,TRUE);
    OnSaveDocument(szProjectFile);
    

    estartu_de: Danke für die Hilfe und die guten Tipp's 👍



  • Gerne gescheben - dafür schreib ich jetzt deine Lösung ab. 😉


Anmelden zum Antworten