Класс TDC, являющийся базовым для
Класс TDC, являющийся базовым для целого ряда классов, описывающих различные контексты устройств (TPaintDC, TWin-dowDC, TClientDC и др.), включает дескрипторы исходных графических объектов (ин-
струментов рисования) OrgBrush, OrgPen, OrgFont и OrgPalette, а также большое количество (около 200) графических функций, обеспечивающих вывод на экран текстов, фигур и других изображений, создание, выбор и настройку инструментов рисования,- получение и изменение режимов работы графической системы и т.д. Большинство этих функций инкапсулируют соответствующие функции API Windows.
Очень небольшой по объему класс TPaintDC содержит в качестве данных-членов дескриптор окна типа HWND (данное с именем Wnd) и хорошо известную нам структуру PAINTSTRUCT (данное с име-
230____________________________________________________________ ____Глава 26
нем Ps), используемую системой Windows при перерисовке изображения (см. гл. 8). Функций-членов в классе TPaintDC всего две: конструктор TPaintDC() и деструктор ~TPaintDC(). Как показано на рис. 26.2, в конструкторе вызывается функция API Windows BeginPaint(), которая заполняет структуру Ps и возвращает контекст устройства; в деструкторе вызывается функция API Windows EndPaint(), освобождающая контекст устройства. Таким образом, при создании объекта класса TPaintDC автоматически выполняются необходимые инициализирующие действия, а при его уничтожении - необходимые завершающие действия. Стоит еще отметить, что в деструктор ~TPaintDC() входит также вызов функции Restore-Objects(), выполняющей выбор в контекст устройства исходных инструментов. Таким образом, в OWL-программе после окончания работы с созданными и выбранными в контекст устройств инструментами, нет необходимости выполнять относительно громоздкую процедуру выбора назад в контекст всех исходных дескрипторов, так это действие автоматически выполняется в деструкторе класса.
Поступление в окно приложения сообщения WM_PAINT приводит к вызову защищенной функции класса TWindow EvPaint(). Поскольку сообщение WM_PAINT приходит в наше окно, с которым ассоциируется объект MyWin (являющийся потомком класса TWindow и наследующий его открытые и защищенные члены), то функция EvPaint() вызывается именно для этого объекта. Определение функции EvPaint() (которое можно найти в файле SOURCE\OWL\WINDOW.CPP), за вычетом некоторых несущественных пока деталей, выглядит следующим образом:
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий