共用方式為


繪製自訂視窗背景

您可以繪製自己的視窗背景,而不是讓系統為您繪製它。 大部分的應用程式在註冊視窗類別時,指定類別背景筆刷的筆刷控點或系統色彩值;系統會使用筆刷或色彩繪製背景。 不過,如果您將類別背景筆刷設定為 Null,則每當必須繪製視窗背景時,系統就會將 WM_ERASEBKGND 訊息傳送至視窗程式,讓您繪製自訂背景。

在下列範例中,視窗程式會繪製一個大型的棋盤模式,以整齊方式放入視窗中。 此程式會以白色筆刷填滿工作區,然後使用灰色筆刷繪製十三個 20 到 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