Дальнейшие операции, использующие контексты устройств,
Дальнейшие операции, использующие контексты устройств, должны выполняться непосредственно в функции Paint(), обрабатывающей сообщение WM_PAINT. Прежде всего с помощью конструктора класса TMemoryDC создается совместимый с контекстом устройства dc контекст памяти memdc. Далее функцией TMemoryDC::SelectObject() в него выбирается заданный объект. Из описания функции Selec-tObject()
void SelectObject(const TBitmap&)
видно, что в качестве параметра этой функции выступает объект класса TBitmap, передаваемый по ссылке. У нас в программе объявлено не имя объекта, а указатель на него bitmap, из которого сам объект получается снятием ссылки (символ *).
Наконец, последней операцией является копирование изображения из памяти в окно приложения. Для этого используется функция блочной передачи данных класса TDC BitBlt(), по своему назначению и
Обработка сообщения WM_PAINT и интерфейс GDI_______________________ 243
параметрам совпадающую с одноименной функцией API Windows, которую она инкапсулирует. Использованные в примере функции Width() и Height() принадлежат классу TBitmap и позволяют получить ширину и высоту созданное области памяти.
Контекст области памяти memdc, как это подробно описывалось в гл. 17, можно использовать для вывода в эту область, помимо растровых изображений, также и графических элементов, рисуемых с помощью перьев, кистей и шрифтов. Например, предложение
memdc.TextOut(102,4,"0") ;
(выполненное, разумеется, перед копированием изображения в окно) добавит к нашему изображению символ 0 (рис. 26.11).
Последнее замечание касается уничтожения создаваемых объектов. Все объекты, создаваемые в программе в явном виде оператором new, необходимо в каком-то месте программы уничтожить (оператором delete). Проще всего для этого воспользоваться деструктором соответствующего класса. В нашем примере уничтожение выделенной области памяти осуществляется в деструкторе класса MyWindow:
~MyWindow(){delete bitmap;}//Деструктор ради удаления bitmap
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий