Bereich "Untergeordnetes Fenster aktualisieren"
Ein untergeordnetes Fenster ist ein Fenster mit dem WS_CHILD oder WS_CHILDWINDOW Format. Wie andere Fensterformatvorlagen empfangen untergeordnete Fenster WM_PAINT Nachrichten, um die Aktualisierung zu fordern. Jedes untergeordnete Fenster verfügt über einen Aktualisierungsbereich, der entweder vom System oder der Anwendung festgelegt werden kann, um mögliche WM_PAINT Nachrichten zu generieren.
Die Aktualisierung und 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 Aktualisierungsbereich des untergeordneten Fensters fest, wenn er den Aktualisierungsbereich des übergeordneten Fensters festlegt, wodurch das untergeordnete Fenster WM_PAINT Nachrichten empfängt, wenn das übergeordnete Fenster sie empfängt. Das System beschränkt die Position des sichtbaren Bereichs des untergeordneten Fensters innerhalb des Clientbereichs 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 Aktualisierungsbereichs des übergeordneten Fensters einen Teil des untergeordneten Fensters enthält. In solchen Fällen sendet das System zunächst eine WM_PAINT Nachricht an das übergeordnete Fenster und sendet dann eine Nachricht an das untergeordnete Fenster, sodass das untergeordnete Element teile des Fensters wiederherstellen kann, die das übergeordnete Element möglicherweise übergezeichnet hat.
Das System legt den Aktualisierungsbereich des übergeordneten Elements beim Festlegen des untergeordneten Elements nicht fest. Eine Anwendung kann keine WM_PAINT Nachricht 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 ein Teil des Clientbereichs des übergeordneten Elements ungültig wird, 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 Aktualisierungsbereich eines untergeordneten Fensters festgelegt wird, wenn das übergeordnete Fenster festgelegt wird, indem beim Erstellen des übergeordneten Fensters die WS_CLIPCHILDREN Formatvorlage 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 Aktualisierungsbereichs, der die untergeordneten Fenster enthalten kann. Wenn die Anwendung im übergeordneten Fenster zeichnet, wird jede Zeichnung, die das untergeordnete Fenster abdecken würde, abgeschnitten, wodurch eine nachfolgende WM_PAINT Nachricht zum untergeordneten Fenster unnötig wird.
Die Aktualisierungs- und sichtbaren Bereiche eines untergeordneten Fensters sind ebenfalls von den gleichgeordneten Elementen des untergeordneten Fensters betroffen. Gleichgeordnete Fenster sind alle Fenster mit einem gemeinsamen übergeordneten Fenster. Wenn gleichgeordnete Fenster überlappen, wirkt sich das Festlegen des Updatebereichs für einen anderen auf den Updatebereich eines anderen aus, wodurch WM_PAINT Nachrichten an beide Fenster gesendet werden. Wenn ein Fenster in der übergeordneten Kette zusammengesetzt ist (ein Fenster mit WX_EX_COMPOSITED), empfangen gleichgeordnete Fenster WM_PAINT Nachrichten in umgekehrter Reihenfolge ihrer Position in der Z-Reihenfolge. In diesem Fall erhält das Fenster, das in der Z-Reihenfolge (oben) die letzte WM_PAINT Nachricht und umgekehrt. Wenn ein Fenster in der übergeordneten Kette nicht zusammengesetzt ist, empfangen gleichgeordnete Fenster WM_PAINT Nachrichten in Z-Reihenfolge.
Gleichgeordnete Fenster werden nicht automatisch abgeschnitten. Ein gleichgeordnetes Element kann über ein anderes gleichgeordnetes Element zeichnen, auch wenn das Zeichnungsfenster in der Z-Reihenfolge eine niedrigere Position aufweist. Eine Anwendung kann dies verhindern, indem beim Erstellen der Fenster die WS_CLIPSIBLINGS Formatvorlage angegeben wird. 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 aufweist.
Anmerkung
Die Update- und sichtbaren Bereiche für Fenster mit dem WS_POPUP oder WS_POPUPWINDOW Format sind von den übergeordneten Fenstern nicht betroffen.