다음을 통해 공유


사용자 지정 창 배경 그리기

시스템이 직접 그리는 대신 고유한 창 배경을 그릴 수 있습니다. 대부분의 애플리케이션은 창 클래스를 등록할 때 클래스 배경 브러시에 대한 브러시 핸들 또는 시스템 색 값을 지정합니다. 시스템은 브러시 또는 색을 사용하여 배경을 그립니다. 그러나 클래스 배경 브러시를 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에 대한 검사.