Udostępnij za pośrednictwem


Obszar niekliencki

System wysyła komunikat WM_NCPAINT do okna za każdym razem, gdy część obszaru niekliencką okna, taka jak pasek tytułu, pasek menu lub ramka okna, musi zostać zaktualizowana. System może również wysyłać inne komunikaty, aby skierować okno w celu zaktualizowania części obszaru klienta; na przykład gdy okno stanie się aktywne lub nieaktywne, wysyła komunikat WM_NCACTIVATE, aby zaktualizować pasek tytułu. Ogólnie rzecz biorąc, przetwarzanie tych komunikatów dla okien standardowych nie jest zalecane, ponieważ aplikacja musi być w stanie narysować wszystkie wymagane części obszaru nonclient dla okna. Z tego powodu większość aplikacji przekazuje te komunikaty do DefWindowProc do przetwarzania domyślnego.

Aplikacja, która tworzy niestandardowe obszary nieklientowe dla swoich okien, musi przetwarzać te komunikaty. W takiej sytuacji aplikacja musi używać kontekstu urządzenia okna do wykonywania rysunku w oknie. Kontekst urządzenia okna umożliwia aplikacji rysowanie we wszystkich częściach okna, w tym obszaru innego niż klient. Aplikacja pobiera kontekst urządzenia okna przy użyciu GetWindowDC lub funkcji GetDCEx, a po zakończeniu rysowania musi zwolnić kontekst urządzenia okna przy użyciu funkcjiReleaseDC.

System utrzymuje region aktualizacji dla obszaru innego niż klient. Gdy aplikacja odbiera komunikat WM_NCPAINT, parametr wParam zawiera uchwyt do regionu definiujący wymiary regionu aktualizacji. Aplikacja może użyć uchwytu, aby połączyć region aktualizacji z regionem wycinki dla kontekstu urządzenia okna. System nie łączy automatycznie regionu aktualizacji podczas pobierania kontekstu urządzenia okna, chyba że aplikacja używa GetDCEx i określa zarówno uchwyt regionu, jak i flagę DCX_INTERSECTRGN. Jeśli aplikacja nie łączy regionu aktualizacji, zostaną obcięte tylko operacje rysowania, które w przeciwnym razie rozszerzą się poza oknem. Aplikacja nie jest odpowiedzialna za wyczyszczenie regionu aktualizacji, niezależnie od tego, czy używa regionu.

Jeśli aplikacja przetwarza komunikat WM_NCACTIVATE, po przetworzeniu musi zwrócić true, aby skierować system do ukończenia zmiany aktywnego okna. Jeśli okno jest zminimalizowane, gdy aplikacja odbiera komunikat WM_NCACTIVATE, powinien przekazać komunikat do DefWindowProc. W takich przypadkach funkcja domyślna ponownie rysuje etykietę ikony.