Het gehele clientgebied opnieuw tekenen
U kunt uw toepassing de volledige inhoud van het clientgebied opnieuw laten tekenen wanneer het venster de grootte wijzigt door de CS_HREDRAW en CS_VREDRAW stijlen voor de vensterklasse in te stellen. Toepassingen die de grootte van de tekening aanpassen op basis van de grootte van het venster, gebruiken deze stijlen om ervoor te zorgen dat ze beginnen met een volledig leeg clientgebied bij het tekenen.
In het volgende voorbeeld tekent de vensterprocedure een vijfpuntige ster die netjes in het clientgebied past. Het maakt gebruik van een gebruikelijke apparaatcontext en moet de toewijzingsmodus en venster- en kijkraamgebieden instellen telkens wanneer het WM_PAINT bericht wordt verwerkt.
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;
}