Teilen über


Nichtclientbereich

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

Eine Anwendung, die benutzerdefinierte Nichtclientbereiche für seine Fenster erstellt, muss diese Meldungen verarbeiten. Auf diese Weise muss die Anwendung einen Fenstergerätekontext verwenden, um die Zeichnung im Fenster auszuführen. Der Fenstergerätekontext ermöglicht der Anwendung das Zeichnen in allen Teilen des Fensters, einschließlich des Nichtclientbereichs. Eine Anwendung ruft einen Fenstergerätekontext mithilfe der GetWindowDC- oder GetDCEx--Funktion ab, und wenn die Zeichnung abgeschlossen ist, muss der Fenstergerätekontext mithilfe der ReleaseDC--Funktion freigegeben werden.

Das System verwaltet einen Aktualisierungsbereich für den Nichtclientbereich. Wenn eine Anwendung eine WM_NCPAINT Nachricht empfängt, enthält der wParam--Parameter ein Handle für einen Bereich, der die Dimensionen des Aktualisierungsbereichs definiert. Die Anwendung kann das Handle verwenden, um den Aktualisierungsbereich mit dem Clippingbereich für den Fenstergerätekontext zu kombinieren. Das System kombiniert den Aktualisierungsbereich 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, die andernfalls außerhalb des Fensters erweitert würden, abgeschnitten. 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 zum Abschließen der Änderung des aktiven Fensters zu leiten. 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 wird mit der Standardfunktion die Beschriftung für das Symbol neu gezeichnet.