Каждый из макросов вида EV_WM_TIMER,
Каждый из макросов вида 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++.
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий