Redesenhar toda a área do cliente
Você pode fazer com que o aplicativo redesenhe todo o conteúdo da área do cliente sempre que a janela mudar de tamanho definindo os estilos CS_HREDRAW e CS_VREDRAW para a classe de janela. Os aplicativos que ajustam o tamanho do desenho com base no tamanho da janela usam esses estilos para garantir que eles comecem com uma área de cliente completamente vazia ao desenhar.
No exemplo a seguir, o procedimento de janela desenha uma star de cinco pontas que se encaixa perfeitamente na área do cliente. Ele usa um contexto de dispositivo comum e deve definir o modo de mapeamento, bem como extensões de janela e visor sempre que a mensagem WM_PAINT for processada.
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;
}