전체 클라이언트 영역 다시 그리기
창 클래스에 대한 CS_HREDRAW 및 CS_VREDRAW 스타일을 설정하여 창 크기가 변경될 때마다 애플리케이션에서 클라이언트 영역의 전체 콘텐츠를 다시 그릴 수 있습니다. 창 크기에 따라 드로잉 크기를 조정하는 애플리케이션은 이러한 스타일을 사용하여 그릴 때 완전히 빈 클라이언트 영역으로 시작하도록 합니다.
다음 예제에서 창 프로시저는 클라이언트 영역에 잘 맞는 5개의 뾰족한 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;
}