자식 창 업데이트 지역
자식 창은 WS_CHILD 또는 WS_CHILDWINDOW 스타일이 있는 창입니다. 다른 창 스타일과 마찬가지로 자식 창은 업데이트를 요청하는 WM_PAINT 메시지를 받습니다. 각 자식 창에는 시스템 또는 애플리케이션이 최종 WM_PAINT 메시지를 생성하도록 설정할 수 있는 업데이트 영역 이 있습니다.
자식 창의 업데이트 및 표시되는 영역은 자식의 부모 창의 영향을 받습니다. 다른 스타일의 창에는 그렇지 않습니다. 시스템은 부모 창의 업데이트 영역을 설정하는 경우 자식 창의 업데이트 영역을 설정하는 경우가 많으므로 부모 창에서 메시지를 받을 때 자식 창이 WM_PAINT 메시지를 받습니다. 시스템은 자식 창의 표시되는 영역 위치를 부모 창의 클라이언트 영역 내로 제한하고 부모 창 외부로 이동된 자식 창의 모든 부분을 클립합니다.
시스템은 부모 창의 업데이트 영역 일부에 자식 창의 일부가 포함 될 때마다 자식 창에 대한 업데이트 영역을 설정합니다. 이러한 경우 시스템은 먼저 부모 창에 WM_PAINT 메시지를 보낸 다음 자식 창에 메시지를 보내 자식 창에서 부모가 그린 창의 일부를 복원할 수 있도록 합니다.
자식이 설정되면 시스템에서 부모의 업데이트 지역을 설정하지 않습니다. 애플리케이션은 자식 창을 무효화하여 부모 창에 대한 WM_PAINT 메시지를 생성할 수 없습니다. 마찬가지로 애플리케이션은 자식 창 아래에 있는 부모 클라이언트 영역의 일부를 무효화하여 자식에 대한 WM_PAINT 메시지를 생성할 수 없습니다. 이러한 경우 두 창 모두 WM_PAINT 메시지를 수신하지 않습니다.
애플리케이션은 부모 창을 만들 때 WS_CLIPCHILDREN 스타일을 지정하여 부모 창이 설정될 때 자식 창의 업데이트 영역이 설정되지 않도록 할 수 있습니다. 이 스타일을 설정하면 시스템에서 부모의 표시되는 영역에서 자식 창을 제외하므로 자식 창이 포함될 수 있는 업데이트 영역의 일부를 무시합니다. 애플리케이션이 부모 창에 칠해지면 자식 창을 덮는 드로잉이 잘려 자식 창에 대한 후속 WM_PAINT 메시지가 필요하지 않습니다.
자식 창의 업데이트 및 표시 영역도 자식 창의 형제에 의해 영향을 받습니다. 형제 창은 공통 부모 창이 있는 모든 창입니다. 형제 창이 겹치는 경우 하나의 업데이트 영역을 설정하면 다른 항목의 업데이트 영역에 영향을 미치며 , 이로 인해 WM_PAINT 메시지가 두 창으로 전송됩니다. 부모 체인의 창이 복합된 경우(WX_EX_COMPOSITED 있는 창) 형제 창은 Z 순서로 해당 위치의 역순으로 WM_PAINT 메시지를 받습니다. 이 경우 Z 순서에서 가장 높은 창(위쪽)은 WM_PAINT 메시지를 마지막으로 수신하고 그 반대의 경우도 마찬가지입니다. 부모 체인의 창이 복합되지 않으면 형제 창은 Z 순서로 WM_PAINT 메시지를 받습니다.
형제 창은 자동으로 잘리지 않습니다. 그리는 창의 위치가 Z 순서에서 더 낮은 경우에도 한 형제가 다른 겹치는 형제를 그릴 수 있습니다. 애플리케이션은 창을 만들 때 WS_CLIPSIBLINGS 스타일을 지정하여 이를 방지할 수 있습니다. 이 스타일을 설정하면 겹치는 형제 창이 Z 순서에서 더 높은 위치를 갖는 경우 시스템은 겹치는 형제 창의 모든 부분을 창의 표시되는 영역에서 제외합니다.
참고
WS_POPUP 또는 WS_POPUPWINDOW 스타일이 있는 창의 업데이트 및 표시 영역은 부모 창의 영향을 받지 않습니다.