Графический интерфейс GDI в Microsoft Windows


Приложение REGIONS - часть 3


// Область ограничения не задана hrgnClip = NULL;

return 0; }

// При изменении размеров окна сохраняем // новые значения для ширины и высоты, // а также определяем область ограничения case WM_SIZE: { cxClient = LOWORD(lParam); cyClient = HIWORD(lParam);

// Если область ограничения была определена раньше, // удаляем ее if(hrgnClip) DeleteRgn(hrgnClip);

// Формируем область ограничения hrgnClip = CreateEllipticRgn(0, 0, cxClient, cyClient);

// Временная область ограничения hrgnTemp = CreateEllipticRgn(0, 0, cxClient, cyClient);

// Первая эллиптическая область hrgn1 = CreateEllipticRgn(0, 0, cxClient, cyClient);

// Вторая эллиптическая область hrgn2 = CreateEllipticRgn(cxClient/3, cyClient/3, 2*(cxClient/3), 2*(cyClient/3));

// Прямоугольная область hrgn3 = CreateRectRgn(cxClient/20, cyClient/20, 19*(cxClient/20), 19*(cyClient/20));

// Комбинируем области UnionRgn(hrgnTemp, hrgn1, hrgn3); SubtractRgn(hrgnClip, hrgnTemp, hrgn2);

// Удаляем временные области DeleteRgn(hrgn1); DeleteRgn(hrgn2); DeleteRgn(hrgn3); DeleteRgn(hrgnTemp); return 0; }

// Рисование в окне case WM_PAINT: { RECT rc;

// Получаем контекст отображения для // рисования во внутренней области окна hdc = BeginPaint(hwnd, &ps);

// Выбираем встроенную кисть зеленого цвета hbrush = CreateSolidBrush(RGB(0, 0xff, 0));

// Обводим границы области FrameRgn(hdc, hrgnClip, hbrush, 2, 5);

// Выбираем область ограничения в контекст // отображения SelectClipRgn(hdc, hrgnClip);

// Определяем координаты прямоугольной // области для вывода текста rc.left = cxChar; rc.top = 0; rc.right = cxClient - cxChar; rc.bottom = cyClient;

// Вывод текста DrawText(hdc, szText, lstrlen(szText), &rc, DT_LEFT | DT_WORDBREAK);

// Освобождаем контекст отображения EndPaint(hwnd, &ps); return 0; }

case WM_DESTROY: { // удаляем область ограничения DeleteRgn(hrgnClip);

PostQuitMessage(0); return 0; }

default: break; } return DefWindowProc(hwnd, msg, wParam, lParam); }

Во время создания окна обработчик сообщения WM_CREATE определяет метрику шрифта и записывает значение NULL в переменную hrgnClip.


Начало  Назад  Вперед



Книжный магазин