Redessin de la zone cliente entière
Vous pouvez faire en sorte que votre application redessine le contenu entier 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 avec une zone client complètement vide lors du dessin.
Dans l’exemple suivant, la procédure de fenêtre dessine une étoile à cinq branches qui s’intègre parfaitement dans la zone cliente. Il utilise un contexte de périphérique courant et doit définir le mode de mappage ainsi que les extensions de fenêtre et de fenêtre d’affichage chaque fois que le message de _ peinture WM 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;
}