Bagikan melalui


Menggambar ulang Seluruh Area Klien

Anda dapat membuat aplikasi Anda menggambar ulang seluruh konten area klien setiap kali jendela berubah ukuran dengan mengatur gaya CS_HREDRAW dan CS_VREDRAW untuk kelas jendela. Aplikasi yang menyesuaikan ukuran gambar berdasarkan ukuran jendela menggunakan gaya ini untuk memastikan bahwa mereka mulai dengan area klien yang benar-benar kosong saat menggambar.

Dalam contoh berikut, prosedur jendela menggambar star lima titik yang cocok dengan rapi di area klien. Ini menggunakan konteks perangkat umum dan harus mengatur mode pemetaan serta jangkauan jendela dan viewport setiap kali pesan WM_PAINT diproses.

LRESULT APIENTRY WndProc(HWMD hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
{ 
    PAINTSTRUCT ps; 
    HDC hdc; 
    RECT rc; 
    POINT aptStar[6] = {50,2, 2,98, 98,33, 2,33, 98,98, 50,2}; 
 
    . 
    . 
    . 
 
        case WM_PAINT: 
            hdc = BeginPaint(hwnd, &ps); 
            GetClientRect(hwnd, &rc); 
            SetMapMode(hdc, MM_ANISOTROPIC); 
            SetWindowExtEx(hdc, 100, 100, NULL); 
            SetViewportExtEx(hdc, rc.right, rc.bottom, NULL); 
            Polyline(hdc, aptStar, 6); 
            EndPaint(hwnd, &ps); 
            return 0L; 
 
        . 
        . 
        . 
} 
 
 
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
{ 
    WNDCLASS wc; 
 
    . 
    . 
    . 
 
        wc.style = CS_HREDRAW | CS_VREDRAW; 
        wc.lpfnWndProc = (WNDPROC) WndProc; 
 
    . 
    . 
    . 
 
        RegisterClass(&wc); 
 
    . 
    . 
    . 
 
    return msg.wParam; 
}