Condividi tramite


Ridisegno dell'intera area client

È possibile ridisegnare l'intero contenuto dell'area client ogni volta che la finestra cambia le dimensioni 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 routine della finestra disegna un star a cinque punte che si adatta perfettamente all'area client. Usa un contesto di dispositivo comune e deve impostare la modalità di mapping, nonché gli extent della finestra e del riquadro di visualizzazione ogni volta che viene elaborato il messaggio 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; 
}