Программирование под Win32


Программирование для Windows с помощью библиотеки объектов OWL - стр. 16


Заметим, что в прототипе функции Paint

virtual void Paint(TDC& dc,   bool  erase,   TRect& rect);

первый аргумент указан типа TDC, а мы присваиваем ему значение типа TPaintDC. Поскольку, однако, класс TPaintDC является производным от TDC, такое преобразование указателей (и ссылочных перемен­ных) является допустимым (см. гл. 24). Правда, при этом преобразовании объект dc усекается до содер­жимого базового класса TDC и из него исключаются члены, добавленные классом TPaintDC, конкретно, структура Ps и дескриптор окна Wnd, которые мы уже не можем использовать в функции Paint(). Види­мо, разработчики полагали, что эти данные не понадобятся прикладной программе. Область же вырезки, которая может программе потребоваться, передается в функцию Paint() через параметр rect. Передается также и флаг стирания фона окна, который обычно имеет нулевое значение, задающее автоматическое перерисовывание фона окна программами Windows.

Итак, при поступлении в наше окно сообщения WM_PAINT, автоматически создается объект класса TPaintDC с конкретным именем dc, через который мы можем получить доступ ко всему набору графиче­ских функций класса TDC, и выполняется вызов функции API Windows BeginPaint(), которая заполняет структуру Ps. Наша задача теперь сводится к вызову любых требуемых функций GDI для объекта dc. В примере 26-1 для объекта dc вызывается единственная функция TextOut() (инкапсулированная в OWL) для вывода строки текста:

dc.TextOut(10,10,"Строка  текста");//Вывод строки текста

В дальнейших примерах будут проиллюстрированы приемы работы с другими функциями GDI.

Как уже отмечалось, при выходе из функции нам нет необходимости заботиться об освобождении контекста устройства (функция API Windows EndPaint()), так как эту работу берет на себя класс TPaintDC.


Вывод в окно геометрических фигур

На рис. 26.3. приведен результат работы приложения, рас­сматриваемого в этом разделе.

//Пример 26-2.   Вывод геометрических фигур

//Файл 26-2.срр




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



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