사용자 지정 창 배경 그리기
시스템이 직접 그리는 대신 고유한 창 배경을 그릴 수 있습니다. 대부분의 애플리케이션은 창 클래스를 등록할 때 클래스 배경 브러시에 대한 브러시 핸들 또는 시스템 색 값을 지정합니다. 시스템은 브러시 또는 색을 사용하여 배경을 그립니다. 그러나 클래스 배경 브러시를 NULL로 설정하면 시스템에서 창 배경을 그려야 할 때마다 창 프로시저에 WM_ERASEBKGND 메시지를 보내 사용자 지정 배경을 그릴 수 있습니다.
다음 예제에서 창 프로시저는 창에 깔끔하게 맞는 큰 바둑판 패턴을 그립니다. 이 프로시저는 클라이언트 영역을 흰색 브러시로 채운 다음 회색 브러시를 사용하여 13개의 20-by-20 사각형을 그립니다. 배경을 그릴 때 사용할 디스플레이 디바이스 컨텍스트는 메시지의 wParam 매개 변수에 지정됩니다.
HBRUSH hbrWhite, hbrGray;
.
.
.
case WM_CREATE:
hbrWhite = GetStockObject(WHITE_BRUSH);
hbrGray = GetStockObject(GRAY_BRUSH);
return 0L;
case WM_ERASEBKGND:
hdc = (HDC) wParam;
GetClientRect(hwnd, &rc);
SetMapMode(hdc, MM_ANISOTROPIC);
SetWindowExtEx(hdc, 100, 100, NULL);
SetViewportExtEx(hdc, rc.right, rc.bottom, NULL);
FillRect(hdc, &rc, hbrWhite);
for (i = 0; i < 13; i++)
{
x = (i * 40) % 100;
y = ((i * 40) / 100) * 20;
SetRect(&rc, x, y, x + 20, y + 20);
FillRect(hdc, &rc, hbrGray);
}
return 1L;
애플리케이션이 최소화된 자체 창을 그리는 경우 시스템은 WM_ERASEBKGND 메시지를 창 프로시저로 보내 최소화된 창의 배경을 그립니다. WM_PAINT 사용하는 것과 동일한 기술을 사용하여 창이 최소화되었는지 여부를 확인할 수 있습니다. 즉, IsIconic 함수를 호출하고 반환 값 TRUE에 대한 검사.