Шаг 207.
Среда программирования Visual C++.
Функция OnDraw()

    На этом шаге мы рассмотрим переопределение функции OnDraw().

    Созданные средствами MFC ActiveX ControlWizard элементы управления реализуют пользовательский интерфейс, а это означает, что большая часть созданного нами кода выполняет их отображение на экране. Как и в случае MFC-приложения архитектуры "документ/вид", весь графический код элемента управления находится в одной функции OnDraw(). Ниже показана ее реализация, сгенерированная ControlWizard:

void COneArmedBanditCtrl::OnDraw(
	CDC* pdc, const CRect& rcBounds, const CRect& rcInvalid)
{
  // TODO: Replace the following code with your own drawing code.
  pdc->FillRect(rcBounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
  pdc->Ellipse(rcBounds);
}

    Функция COleControl::OnDraw() получает указатель на MFC-объект контекста устройства и координаты (в логических единицах) прямоугольника, представляющего область, занимаемую элементом ynpaвления на экране. Избегайте фиксированных значений в коде графических элементов, кроме того, масштабируйте все элементы в соответствии с размерами ограничивающего прямоугольника. Таким образом, Вы будете уверены, что элемент управления виден полностью, а пропорции его внутренних элементов не искажены. В функцию OnDraw() также передается прямоугольник, задающий координаты недействительной области элемента управления, что позволит системе оптимизировать код вывода графических элементов.

    Текст приложения можно взять здесь (36,3 Кб).

    На следующем шаге мы рассмотрим реализацию метода элемента управления.




Предыдущий шаг Содержание Следующий шаг