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


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


Paint О

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

} /*Главная функция приложения OwlMain*/

int OwlMain(int,char*[]){

MyApp* myApp=new MyApp;

return myApp->Run(); }


Обработка сообщения WM_PAINT и интерфейс GDI_____________________________ 229

Обработка сообщения WM_PAINT

Сравнивая примеры 25-1 и 26-1, легко заметить, что они различаются всего несколькими строками. К числу несущественных отличий относится изъятие из конструктора класса главного окна MyWindow строки задания цвета фона окна, в результате чего окно приложения будет иметь цвет по умолчанию, т.е. белый. Более принципиальное отличие заключается в том, что в классе MyWindow замещена открытая виртуальная функция класса TWindow Paint(), которая перешла по наследству сначала в производный от TWindow класс TFrameWindow, а оттуда в прикладной класс MyWindow. Эта функция вызывается про­граммами OWL в ответ на приход в окно приложения сообщения WM_PAINT. Исходная функция Paint(), входящая в класс TWindow, является функцией-заглушкой: в ее определении нет не единой строки. За­местив ее в производном от TWindow классе функцией с разумным содержимым, мы получаем возмож­ность обрабатывать в нашей программе сообщения WM_PAINT, поступающие (в данном случае) в глав­ное окно приложения. В примере 26-1 обработка заключается в выводе в окно с помощью функции TextOut() короткой строки текста; в следующих примерах будут продемонстрированы другие средства графического интерфейса.

Функция TextOut() принадлежит классу TDC и вызывается для объекта этого класса dc (откуда взял­ся этот объект, будет объяснено ниже). Эта функция совпадает по наименованию и смыслу с аналогич­ной функцией Windows API, хотя отличается от последней набором аргументов (см. для сравнения при­мер 8.1 из гл. 8). В таком случае говорят, что функция OWL инкапсулирует аналогичную функцию API. Практически все основные функции API Windows инкапсулированы в библиотеке OWL, хотя способ их вызова и состав аргументов, естественно, различаются. Иногда оказывается, что требуемая функция OWL недоступна в конкретном месте программы (потому что принадлежит другому классу и объявлена в нем защищенной или даже закрытой); тогда приходится обращаться к соответствующей функции Win­dows API. Примеры такого рода будут приведены в дальнейшем.




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



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