Операционные системы. Программирование в операционной среде Windows

53 Рисование эллипса BOOL Ellipse (HDC hdc, int upX, int upY, int lowX, int lowY); Функция EUipseQ рисует эллипс. Эллипс определяется с помощью координат ограничивающего прямоугольника (координаты прямоугольника заданы так же, как для функции Rectangle()). Для того, чтобы нарисовать круг, достаточно определить квадрат. 4.6.3. Обновление содержимого окна ОС Windows, как правило, не запоминает содержимое окна. В случае восстановления окна после минимизации, или активизации окна, перекрытого другим активным окном, программа должна перерисовать содержимое окна. Для этого Windows посылает программе специальное сообщение WM PAINT. В ответ на это сообщение программа должна вывести графику в окно заново. Обработка сообщения WM PAINT начинается с получения контекста устройства окно при помощи вызова функции BeginPaint(): HDC BeginPaint (HWND hWnd, LPPAINTSTRUCT IpPS); Параметр hWnd задает дескриптор окна. Параметр IpPS - указатель на структуру, содержащую характеристики области перерисовки. Следующим шагом выводится информация в область перерисовки, затем вызов функции EndPaintQ освобождает контекст устройства. Функция EndPaint() имеет такие же аргументы, как и функция BeginPaint(). Для обработки сообщения WMPAINT в оконную функцию добавляется следуюпщй фрагмент: HWND hWnd; HDC hdc; PAINTSTRUCT paintstruct; case WM_PAINT: hdc=BeginPaint(hWnd, &paintstruct); EndPaint (hWnd, &paintstruct); break; Программа может сама сообщить ОС Windows о необходимости вывода информации и перерисовки окна, т.е. запросить у Windows сообщение WM PAINT. Для этого программа готовит информацию для вывода и вызывает функцию InvalidateRect(), а Windows отмечает окно, как подлежащее перерисовке, и посылает программе сообщение WM PAINT. BOOL InvalidateRect(HWND hWnd, CONST RECT *lpRect, BOOL fErase); В структуре IpRect можно задать координаты прямоугольной области, подлежащей перерисовке. Если второй параметр равен NULL, окно перерисовывается полностью. Если третий параметр равен TRUE, окно перед перерисовкой очищается, если же он равен FALSE, то очистка окна не производится.

RkJQdWJsaXNoZXIy MTY0OTYy