重新繪製整個工作區
每當視窗變更大小時,您可以讓應用程式重新繪製工作區的整個內容,方法是設定視窗類別的CS_HREDRAW和CS_VREDRAW樣式。 根據視窗大小調整繪圖大小的應用程式會使用這些樣式,以確保它們在繪圖時以完全空白的工作區開始。
在下列範例中,視窗程式會繪製五個指向的star,該star適合在工作區中。 它會使用一般裝置內容,而且每次處理 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;
}