MDI beim Start


  • Administrator

    Guten Tag die Experten

    Ich würde gerne beim öffnen eines Dokuments zuerst einen Dialog aufrufen, welcher kurz ein paar Eingaben abfragt, mit welchen das Dokument dann erstellt wird. So hab ich in der CView abgeleiteten Klasse in OnInitialUpdate meine Dialog Box eingefügt. Bzw. rufe sie dort mit DoModal auf. Das funktioniert auch wunderbar, wenn ich das Programm starte. Sobald ich aber in diesem Programm ein neues Dokument erstellen will, dann tritt ein ASSERT Fehler auf, ausgelöst durch durch den MFC Code (also nicht meiner). Und zwar in der Datei viewscrl.cpp auf der Linie 413
    Mir ist es ein Rätsel, wie es zuerst funktionieren kann und dann plötzlich nicht mehr. Und mir ist es ein Rätsel, wieso der Fehler überhaupt auftritt. Denn wenn ich auf Ignore klicke, so läuft das Programm ganz normal weiter. Es wird die DialogBox angezeigt man gibt die Eingaben ein und das neue Dokument erscheint. Der Fehler macht für mich keinen Sinn.
    Deshalb wende ich mich nu nan euch und ich hoffe ihr könnt mir helfen.
    Mit Freundlichen Grüssen

    Dravere



  • Hast du dir mal den ASSERT angeschaut? 😕

    if (m_nMapMode == MM_NONE)
    	{
    		TRACE(traceAppMsg, 0, "Error: must call SetScrollSizes() or SetScaleToFitSize()");
    		TRACE(traceAppMsg, 0, "\tbefore painting scroll view.\n");
    ---->   ASSERT(FALSE);
    		return;
        }
    

    Hat nichts mit deinem Dialog zu tun. Er sagt dir doch, du musst erst die SetScrollSize oder SetScaleToFitSize Methoden aufrufen bevor du dein scroll view zeichnen kannst. Hast du das gemacht?

    codeman


  • Administrator

    Das ist ja das lustige ... Er führt OnInitDialog aus ...
    Und bricht bei dlg.DoModal() ab ... in dieser Funktion.
    Ich weiss nicht wieso der für ein Dialog die ScrollSizes braucht, welche für das Fenster sind, um ein Dialog zu zeichnen.
    Ich hab es inzwischen so gelöst, dass ich die ScrollSizes vor dem Dialog-Aufruf mit CSize(0) initialisiere.
    Problem ist halt, dass ich erst nach dem aufruf des Dialogs sagen kann wie gross das Dokument wirklich wird.
    Mein Lösung find ich nicht gerade sauber, gibt es da nichts besseres?
    Grüssli


Anmelden zum Antworten