Condividi tramite


Ridisegno dell'intera area del cliente

È possibile ridisegnare l'intero contenuto dell'area client ogni volta che la finestra cambia dimensione impostando gli stili CS_HREDRAW e CS_VREDRAW per la classe finestra. Le applicazioni che regolano le dimensioni del disegno in base alle dimensioni della finestra usano questi stili per assicurarsi che inizino con un'area client completamente vuota durante il disegno.

Nell'esempio seguente, la procedura della finestra disegna una stella a cinque punte che si adatta perfettamente all'area cliente. Usa un contesto di dispositivo comune e deve impostare la modalità di mappatura, nonché l'estensione della finestra e del visore ogni volta che viene elaborato il messaggio di WM_PAINT.

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; 
}