UpdateAllviews
-
Hallo,
kann mir jemand bei folgendem Problem Helfen:
Ich leses in der Dokumentenklasse Daten ein. Dann möchte ich von der Funktion aus in der ich UpdateAllviews(NULL) aufrufe in die OnDraw Methode springen können, die Daten darstellen und wieder in die Funktion in der ich UpdateAllviews(NULL) aufrufe zurückspringen und den Code der nach UpdateAllviews(NULL) folgt anschließend abrbeiten lassen.
Aber bei mir ist es so, daß wenn ich nach Aufruf von UpdateAllviews(NULL);
die Daten verändere, werden die veränderten Daten Dargestellt. Das bedeutet die
OnDraw Methode wird erst nach verlassen die Funktion in der ich UpdateAllviews(NULL); aufrufe abgearbeitet. Das möchte ich nicht. Wie kann ich MFC dazu bringen, daß es dirjekt nach AUfrud von UpdateAllviews(NULL);
in die OnDraw Methode springt.Danke
-
Das geht gar nicht! Oder zumindest so nicht!
Dir muss klar sein, dass Du keinen Einfluss hast wann ein Fenster mit den entsprechenden aten angezeigt werden soll. Die OnDraw Routine ist verantwortlich für das neue Zeichnen!
Deshalb macht die Defaultimplementierung in OnUpdate auch einen Invalidate.
Korrekt wäre die Daten im View in OnUpdate aufzubereiten (wenn überhaupt nötig) und dem View zu sagen. Los zeichne Dich (Invalidate).
OnDraw nimmt die aufbereiteten Daten oder eben die Daten aus dem Dokument und zeichnet diese.
Du kannst aber in OnUpdate des View Invalidate+UpdateWindow aufrufen, dann wird in jedem Fall auch sofort gezeichnet, wähernd UpdateAllViews noch ausgeführt wird. Dennoch ist OnDraw der Bereich indem alles Zeichnen ablaufen sollte.