Кент Рейсдорф. BORLAND C++BUILDER. Раздел 4

Кент Рейсдорф. BORLAND C++BUILDER. Страница 425

3. Добавьте определение обработчика сообщения в модуль исходного кода вашей формы.

Сначала позвольте мне показать код, реализующий отображение сообще­ний для вашего класса; затем мы рассмотрим функцию обработки сообщения.

Таблица отображения сообщений C++Builder

Таблица отображения сообщений располагается в конце определения ва­шего класса. Она начинается с BEGIN_MESSAGE_MAP и заканчивается END_MESSAGE_MAP. Между этими двумя элементами находится одно или несколько объявлений MESSAGE HANDLER. Вы передаете имя базового класса в качестве единственного параметра в END_MESSAGE_MAP. Даже при сегодняшней инфляции картинка все еще стоит тысячи слов, так что позвольте мне продемонстрировать вам типовую таблицу отображения сооб­щений. Это выглядит следующим образом:

Давайте раскроем макрос обработчика MESSAGE_HANDLER и исследуем его. Здесь я буду использовать одну из записей синтаксиса, которые я очень не люблю:

MESSAGE_HANDLER(<message>, <message struct>, <message handler>)

Параметр message — это сообщение Windows, которое вы хотите обрабо­тать. Имена сообщений Windows всегда пишутся в верхнем регистре (во всяком случае, имена документированных сообщений).

Параметр message struct используется для передачи имени структуры, которая будет содержать параметры сообщения после его раскрытия VCL. VCL содержит объявления соответствующих структур для большинства сообщений Windows. Имя структуры — это имя сообщения Windows с предшествующим символом Т и без символа подчеркивания. Например, именем структуры для сообщения Windows WMERASEBKGND является TWMEraseBkgnd. Вы могли предположить, что имя структуры также будет записано в верхнем регистре, но в большинстве случаев существующая запись полностью оправдана. Эта структура передается обработчику сообщения (подробнее об этом чуть позже).

Web-дизайн (с) 2010 All rights reserved