Вы можете получить возможность, чтобы Ваше приложение перерисовывало все содержимое рабочей области всякий раз, когда окно изменяет размеры, путем установки стилей CS_HREDRAW и CS_VREDRAW для класса окна. Приложения, которые подгоняют размер рисования, основанного на размере окна, используют эти стили, для гарантии, что они стартуют с полностью пустой рабочей области, кода рисуют.
В примере ниже, оконная процедура рисует пятиконечную звезду, которая плотно помещается в рабочей области окна. Процедура использует общий контекст устройства и должна установить режим отображения такой же как окно и протяженности области ввода каждый раз, когда обрабатывает сообщение 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; } |