Freigeben über


Nichtclientbereich

Das System sendet eine WM_NCPAINT Meldung an das Fenster, wenn ein Teil des Nichtclientbereichs des Fensters, z. B. Titelleiste, Menüleiste oder Fensterrahmen, aktualisiert werden muss. Das System kann auch andere Nachrichten senden, um ein Fenster dazu zu leiten, einen Teil seines Clientbereichs zu aktualisieren. Wenn ein Fenster beispielsweise aktiv oder inaktiv wird, sendet es die WM_NCACTIVATE Nachricht, um seine Titelleiste zu aktualisieren. Im Allgemeinen wird die Verarbeitung dieser Meldungen für Standardfenster nicht empfohlen, da die Anwendung in der Lage sein muss, alle erforderlichen Teile des Nichtclientbereichs für das Fenster zu zeichnen. Aus diesem Grund übergeben die meisten Anwendungen diese Meldungen zur Standardverarbeitung an DefWindowProc .

Eine Anwendung, die benutzerdefinierte Nichtclientbereiche für ihre Fenster erstellt, muss diese Nachrichten verarbeiten. Dabei muss die Anwendung einen Fenstergerätekontext verwenden, um das Zeichnen im Fenster auszuführen. Mit dem Fenstergerätekontext kann die Anwendung alle Teile des Fensters zeichnen, einschließlich des Nichtclientbereichs. Eine Anwendung ruft einen Fenstergerätekontext mithilfe der GetWindowDC - oder GetDCEx-Funktion ab und muss nach Abschluss des Zeichnens den Fenstergerätekontext mithilfe der ReleaseDC-Funktion freigeben.

Das System verwaltet einen Updatebereich für den Nichtclientbereich. Wenn eine Anwendung eine WM_NCPAINT-Meldung empfängt, enthält der wParam-Parameter ein Handle für einen Bereich, der die Dimensionen des Updatebereichs definiert. Die Anwendung kann das Handle verwenden, um den Updatebereich mit dem Clippingbereich für den Fenstergerätekontext zu kombinieren. Das System kombiniert den Updatebereich beim Abrufen des Fenstergerätekontexts nicht automatisch, es sei denn, die Anwendung verwendet GetDCEx und gibt sowohl das Regionshandle als auch das DCX_INTERSECTRGN-Flag an. Wenn die Anwendung den Aktualisierungsbereich nicht kombiniert, werden nur Zeichnungsvorgänge beschnitten, die sich andernfalls außerhalb des Fensters erstrecken würden. Die Anwendung ist nicht für das Löschen der Updateregion verantwortlich, unabhängig davon, ob sie die Region verwendet.

Wenn eine Anwendung die WM_NCACTIVATE-Nachricht verarbeitet, muss sie nach der Verarbeitung TRUE zurückgeben, um das System anzuweisen, die Änderung des aktiven Fensters abzuschließen. Wenn das Fenster minimiert wird, wenn die Anwendung die WM_NCACTIVATE-Nachricht empfängt, sollte sie die Nachricht an DefWindowProc übergeben. In solchen Fällen zeichnet die Standardfunktion die Bezeichnung für das Symbol neu aus.