Bagikan melalui


Menggambar Latar Belakang Jendela Kustom

Anda dapat menggambar latar belakang jendela Anda sendiri daripada membuat sistem menggambarnya untuk Anda. Sebagian besar aplikasi menentukan handel kuas atau nilai warna sistem untuk kuas latar belakang kelas saat mendaftarkan kelas jendela; sistem menggunakan kuas atau warna untuk menggambar latar belakang. Namun, jika Anda mengatur kuas latar belakang kelas ke NULL, sistem mengirim pesan WM_ERASEBKGND ke prosedur jendela Anda setiap kali latar belakang jendela harus digambar, memungkinkan Anda menggambar latar belakang kustom.

Dalam contoh berikut, prosedur jendela menggambar pola kotak-kotak besar yang pas di jendela dengan rapi. Prosedur ini mengisi area klien dengan kuas putih dan kemudian menggambar tiga belas persegi panjang 20 per 20 menggunakan kuas abu-abu. Konteks perangkat tampilan yang digunakan saat menggambar latar belakang ditentukan dalam parameter wParam untuk pesan.

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; 

Jika aplikasi menggambar jendela yang diminimalkan sendiri, sistem juga mengirim pesan WM_ERASEBKGND ke prosedur jendela untuk menggambar latar belakang untuk jendela yang diminimalkan. Anda dapat menggunakan teknik yang sama yang digunakan oleh WM_PAINT untuk menentukan apakah jendela diminimalkan yaitu, panggil fungsi IsIconic dan periksa nilai yang dikembalikan TRUE.