Partager via


Redessination de la zone cliente entière

Vous pouvez demander à votre application de redessiner l’intégralité du contenu de la zone cliente chaque fois que la fenêtre change de taille en définissant les styles CS_HREDRAW et CS_VREDRAW pour la classe de fenêtre. Les applications qui ajustent la taille du dessin en fonction de la taille de la fenêtre utilisent ces styles pour s’assurer qu’ils commencent par une zone cliente complètement vide lors du dessin.

Dans l’exemple suivant, la procédure de fenêtre dessine une star à cinq branches qui s’adapte parfaitement à la zone cliente. Il utilise un contexte d’appareil commun et doit définir le mode de mappage ainsi que les étendues de fenêtre et de fenêtre d’affichage chaque fois que le message WM_PAINT est traité.

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