SDI und Fensterauffrischung



  • Hallo,
    ich habe ein Programm unter MFC-SDI geschrieben. Als ich das Projekt angelegt hatte, vergaß ich anzugeben, daß er das Fenster immer maximiert starten soll. Ist nicht weiter schlimm, nur wenn ich nachträglich das Fenster vergrößere, ist der Bildschirminhalt natürlich verhunzt.
    Nun meine Frage, wo kann ich anweisen, daß bei Größenänderung des Fensters oder wegen Überlappung, mein Fensterclient neu gezeichnet wird. Hatte es schon mit der WM-SIZE und ein paar anderen probiert, aber nichts hat genützt 😕

    Danke



  • Müsste eigentlich mit CDeinDocument->UpdateAllViews() gehen, oder?



  • hmm leider klappts nicht so ganz. Er wünscht drei Parameter und ich weiß nicht so genau was da rein muß. Ich stelle einfach mal den Code rein. Muß ich eigentlich immer und in jeder Methode dieses Update reinschreiben?

    void CmenschnichtView::OnTimer(UINT nIDEvent)
    {
    	// TODO: Fügen Sie hier Ihren Meldungsbehandlungscode ein, und/oder benutzen Sie den Standard.
    	CmenschnichtDoc* pDoc=GetDocument();
    	if(pDoc->wuerfeln==true)
    	{
    		zufallszahl=rand()%6;
    		m_wuerfel_ausgabe=zufallszahl+1;
    		UpdateData(FALSE);
    	}
    	UpdateAllViews();
    	CFormView::OnTimer(nIDEvent);
    

    Was passiert, wenn das Fenster minimiert und maximiert wird z.B. ?

    Bin noch Neuling und kenn mich nicht so aus 🙂



  • Oh, ich habs gelöst denk ich mal. Ich habe in der OnDraw() eine Bool-Variablenabfrage ob das Spiel grad gestartet worden ist. Habe die Abfrage einfach rausgenommen und siehe da, ich kann das Fenster hin- und herschieben, min. und max. und das Bild wird immer gezeichnet.
    Weiß zwar nicht, ob das nun der elegante Weg ist...



  • probier mal RedrawWindow()



  • Invalidate(); ???


Anmelden zum Antworten