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


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


Каждый из макросов вида EV_WM_TIMER, описывающих структурные пакеты данных для конкрет­ных сообщений, образует при расширении последовательность из четырех элементов, в которую входят имя обрабатываемого сообщения, код нотификации, имя соответствующего данному сообщению функ­ции-диспетчера и имя прикладной функции, предназначенной для обработки данного сообщения (на­пример, функции EvTimer() в нашем примере).

Функция-диспетчер (все эти функции объявлены в файле \include\owl\dispach.h и описаны в файле \source\owl\dispatch.cpp) служит для преобразования параметров wParam и lParam поступившего сообще­ния в соответствующие типы данных и вызова конкретной функции обработки сообщения с передачей ей этих данных в качестве параметров. В обычной, процедурной программе Windows задачу выделения из параметров сообщения "значимых" данных, а также вызова прикладных функций обработки сообщений выполняет макрос HANDLE_MSG (см. гл. 9). При этом для каждой функции обработки того или иного - сообщения жестко определен свой состав и порядок параметров, однако имена этих функций, которые мы указываем в качестве параметров макросов HANDLE_MSG, могут быть любыми. В библиотеке же OWL имена функций обработки сообщений заранее вписаны в макрорасширения макросов, составляю­щих тело таблицы откликов, и произвольно выбирать их нельзя. Как видно из программы 27-1, содержи­мое таблицы откликов составляется из обозначений вида EV_WM_TIMER или EV_WM_GETMINMAXINFO, где к имени сообщения Windows прибавляется префикс EV_ (от event, со­бытие). Имена же функций обработки формируются из префикса Ev и имени сообщения (без префикса WM_), в котором все отдельные составляющие слова пишутся с прописной буквы (EvTimer, EvGetMin-Maxlnfo, EvGetFont, EvSysKeyUp и т.д.).

Так же, как и при процедурном программировании, заранее трудно угадать состав параметров каж­дой функции обработки сообщения. Перечень стандартных сообщений Windows с указанием формата их функций обработки можно найти в статье Standard Windows Messages интерактивного справочника, вхо­дящего в состав пакета Borland C++.




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



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