Freigeben über


Aktualisierungsbereich des untergeordneten Fensters

Ein untergeordnetes Fenster ist ein Fenster mit dem WS_CHILD- oder WS_CHILDWINDOW-Stil. Wie andere Fensterstile erhalten untergeordnete Fenster WM_PAINT Meldungen, um zum Aktualisieren aufzufordern. Jedes untergeordnete Fenster verfügt über einen Updatebereich, den entweder das System oder die Anwendung so festlegen kann, dass letztliche WM_PAINT Meldungen generiert werden.

Die Aktualisierung und die sichtbaren Bereiche eines untergeordneten Fensters sind vom übergeordneten Fenster des untergeordneten Fensters betroffen. Dies gilt nicht für Fenster anderer Stile. Das System legt häufig den Updatebereich des untergeordneten Fensters fest, wenn es den Updatebereich des übergeordneten Fensters festlegt, sodass das untergeordnete Fenster WM_PAINT Meldungen empfängt, wenn das übergeordnete Fenster sie empfängt. Das System beschränkt die Position des sichtbaren Bereichs des untergeordneten Fensters auf den Clientbereich des übergeordneten Fensters und klammert jeden Teil des untergeordneten Fensters, der außerhalb des übergeordneten Fensters verschoben wird.

Das System legt den Updatebereich für ein untergeordnetes Fenster fest, wenn ein Teil des Updatebereichs des übergeordneten Fensters einen Teil des untergeordneten Fensters enthält. In solchen Fällen sendet das System zuerst eine WM_PAINT-Nachricht an das übergeordnete Fenster und dann eine Nachricht an das untergeordnete Fenster, sodass das untergeordnete Fenster alle Teile des Fensters wiederherstellen kann, die das übergeordnete Fenster möglicherweise übernommen hat.

Das System legt den Updatebereich des übergeordneten Elements nicht fest, wenn der des untergeordneten Elements festgelegt ist. Eine Anwendung kann keine WM_PAINT Meldung für das übergeordnete Fenster generieren, indem das untergeordnete Fenster ungültig wird. Ebenso kann eine Anwendung keine WM_PAINT Nachricht für das untergeordnete Element generieren, indem sie einen Teil des clientseitigen Bereichs des übergeordneten Elements ungültig macht, der vollständig unter dem untergeordneten Fenster liegt. In solchen Fällen empfängt kein Fenster eine WM_PAINT-Nachricht .

Eine Anwendung kann verhindern, dass der Updatebereich eines untergeordneten Fensters festgelegt wird, wenn der des übergeordneten Fensters festgelegt wird, indem beim Erstellen des übergeordneten Fensters die WS_CLIPCHILDREN Stil angegeben wird. Wenn diese Formatvorlage festgelegt ist, schließt das System die untergeordneten Fenster aus dem sichtbaren Bereich des übergeordneten Elements aus und ignoriert daher jeden Teil des Updatebereichs, der die untergeordneten Fenster enthalten kann. Wenn die Anwendung im übergeordneten Fenster zeichnet, wird jede Zeichnung, die das untergeordnete Fenster abdecken würde, abgeschnitten, sodass eine nachfolgende WM_PAINT Nachricht an das untergeordnete Fenster unnötig wird.

Die Aktualisierungs- und sichtbaren Bereiche eines untergeordneten Fensters sind ebenfalls von den untergeordneten Untergeordneten Fenstern betroffen. Gleichgeordnete Fenster sind alle Fenster, die über ein gemeinsames übergeordnetes Fenster verfügen. Wenn sich gleichgeordnete Fenster überlappen, wirkt sich das Festlegen des Updatebereichs für ein Anderes auf den Updatebereich eines anderen aus, sodass WM_PAINT Nachrichten an beide Fenster gesendet werden. Wenn ein Fenster in der übergeordneten Kette zusammengesetzt ist (ein Fenster mit WX_EX_COMPOSITED), erhalten gleichgeordnete Fenster WM_PAINT Nachrichten in umgekehrter Reihenfolge ihrer Position in der Z-Reihenfolge. In diesem Fall empfängt das Fenster am höchsten in der Z-Reihenfolge (oben) seine WM_PAINT Nachricht zuletzt und umgekehrt. Wenn ein Fenster in der übergeordneten Kette nicht zusammengesetzt ist, erhalten gleichgeordnete Fenster WM_PAINT Nachrichten in Z-Reihenfolge.

Gleichgeordnete Fenster werden nicht automatisch beschnitten. Ein gleichgeordnetes Element kann über ein anderes überlappende gleichgeordnetes Element zeichnen, auch wenn das Zeichnungsfenster eine niedrigere Position in der Z-Reihenfolge hat. Eine Anwendung kann dies verhindern, indem sie beim Erstellen der Fenster den WS_CLIPSIBLINGS Stil angibt. Wenn diese Formatvorlage festgelegt ist, schließt das System alle Teile eines überlappenden gleichgeordneten Fensters aus dem sichtbaren Bereich eines Fensters aus, wenn das überlappende gleichgeordnete Fenster eine höhere Position in der Z-Reihenfolge hat.

Hinweis

Die Update- und sichtbaren Bereiche für Fenster mit dem WS_POPUP- oder WS_POPUPWINDOW-Stil sind von den übergeordneten Fenstern nicht betroffen.