Warum müssen wir UpdateWindow nach ShowWindow aufrufen?

9
%Vor%

Ich frage mich, warum wir nach dem UpdateWindow ? ShowWindow aufrufen müssen?

    
Adam Lee 20.06.2012, 11:22
quelle

3 Antworten

8

Es ist völlig unnötig, Ihr Fenster wird ohne es gut malen.

Sie werden einen kleinen Vorteil davon sehen, wenn Ihr Programm nach dem Erstellen des Fensters, aber vor dem Eintritt in die Nachrichtenschleife viele Aufgaben erledigt. Der Benutzer hat etwas zu sehen. Ein Splash-Screen ist der typische Ansatz.

    
Hans Passant 20.06.2012 12:33
quelle
5

ShowWindow repaint das Fenster nicht neu. Der Aufruf von UpdateWindow sendet die Nachricht WM_PAINT an das Fenster und erstellt es neu.

    
Jeeva 20.06.2012 11:25
quelle
4

Normalerweise sendet das System WM_PAINT nur, wenn die Nachrichtenwarteschlange leer ist. Unter normalen Umständen ist das gut genug und es optimiert tatsächlich eine Menge unnötigen Repaint. Die Nachrichten in der Warteschlange ändern häufig den Anwendungsstatus, was oft dazu führen kann, dass ein Teil des Fensters ungültig gemacht wird, und daher zu einem weiteren Malvorgang führt (so sieht der Benutzer den neuen Anwendungszustand). Das Repaint passiert also, nachdem alle diese Nachrichten bearbeitet wurden und das System denkt, dass der Inhalt des neuen Fensters für einige Zeit gültig sein wird (bis wieder eine oder mehrere Nachrichten in die Warteschlange kommen).

Wenn Sie das WM_PAINT jedoch sofort erzwingen und die obige Logik umgehen müssen, können Sie das Senden von WM_PAINT erzwingen (wenn eine ungültige Region vorhanden ist), indem Sie UpdateWindow() aufrufen.

    
mity 22.06.2012 08:33
quelle

Tags und Links