비클라이언트 영역
시스템은 제목 표시줄, 메뉴 모음 또는 창 프레임과 같은 창의 비클라이언트 영역 일부를 업데이트해야 할 때마다 창에 WM_NCPAINT 메시지를 보냅니다. 시스템은 클라이언트 영역의 일부를 업데이트하는 창을 지시하는 다른 메시지를 보낼 수도 있습니다. 예를 들어 창이 활성화되거나 비활성 상태가 되면 WM_NCACTIVATE 메시지를 보내 제목 표시줄을 업데이트합니다. 일반적으로 애플리케이션 창에 대 한 비클라이언트 영역의 모든 필요한 부분을 그릴 수 있어야 하기 때문에 표준 창에 대 한 이러한 메시지를 처리 하지 않는 것이 좋습니다. 이러한 이유로 대부분의 애플리케이션은 기본 처리를 위해 이러한 메시지를 DefWindowProc 전달합니다.
창에 대한 사용자 지정 비클라이언트 영역을 만드는 애플리케이션은 이러한 메시지를 처리해야 합니다. 이렇게 할 때 애플리케이션은 창 디바이스 컨텍스트를 사용하여 창에서 그리기를 수행해야 합니다. 창 디바이스 컨텍스트 애플리케이션은 비클라이언트 영역을 포함하여 창의 모든 부분에 그릴 수 있습니다. 애플리케이션은 GetWindowDC 사용하거나 GetDCEx함수를창 디바이스 컨텍스트를 검색하고 그리기가 완료되면 ReleaseDC 함수를 사용하여 창 디바이스 컨텍스트를 해제해야 합니다.
시스템은 비클라이언트 영역에 대한 업데이트 영역을 유지 관리합니다. 애플리케이션이 WM_NCPAINT 메시지를 받으면 wParam 매개 변수에는 업데이트 영역의 차원을 정의하는 영역에 대한 핸들이 포함됩니다. 애플리케이션은 핸들을 사용하여 업데이트 영역을 창 디바이스 컨텍스트의 클리핑 영역과 결합할 수 있습니다. 애플리케이션이 GetDCEx 사용하고 지역 핸들과 DCX_INTERSECTRGN 플래그를 모두 지정하지 않는 한 시스템은 창 디바이스 컨텍스트를 검색할 때 업데이트 영역을 자동으로 결합하지 않습니다. 애플리케이션이 업데이트 영역을 결합하지 않으면 창 외부로 확장되는 그리기 작업만 잘립니다. 애플리케이션은 지역 사용 여부에 관계없이 업데이트 지역을 지울 책임이 없습니다.
애플리케이션이 WM_NCACTIVATE 메시지를 처리하는 경우 처리 후 시스템에 활성 창 변경을 완료하도록 지시하는 TRUE 반환해야 합니다. 애플리케이션이 WM_NCACTIVATE 메시지를 받을 때 창이 최소화되면 DefWindowProc메시지를 전달해야 합니다. 이러한 경우 기본 함수는 아이콘에 대한 레이블을 다시 그어 줍니다.