Шаг 3.
Обработка событий с точки зрения Windows

    На этом шаге мы рассмотрим общие принципы обработки событий в Windows.

    Обо всех происходящих в системе событиях ядро Windows информирует окна путем посылки сообщений их оконным функциям. Например, при создании окна посылается сообщение wm_Create, при его перемещении - сообщение wm_Move, в результате нажатии клавиши на клавиатуре посылается сообщение wm_Char, при перемещении манипулятора мышь - сообщение wm_MouseMove и так далее. В зависимости от характера события выбирается адресат сообщения - одна из оконных функций. При этом ядро Windows посылает сообщения о каждом событии, происходящем в системе: перемещении манипулятора мышь, нажатии клавиши на клавиатуре, изменении конфигурации, содержимого системных инициализационных файлов и в ряде других случаев. Причем источником этих сообщений может быть либо драйвер устройства (клавиатуры или мыши), либо ядро системы. Сначала эти сообщения помещаются в системную очередь, а из нее пересылаются в очередь прикладной программы, для которой предназначены. Прикладная программа извлекает сообщения из очереди с помощью функции GetMessage и передает их соответствующей оконной функции, используя вызов DispatchMessage, преобразуя ряд сообщений с помощью TranslateMessage. Такая комбинация функций называется циклом обработки сообщений. Типичный цикл обработки сообщений выглядит следующим образом:

   while GetMessage(Message,0,0,0) do
   begin
       TranslateMessage(Message);
       DispatchMessage(Message);
   end;

    Одним из назначений средств визуального программирования, к которым относится Delphi, является упрощение создания Windows-приложений. Это может достигаться различными способами, причем иногда в ущерб полной функциональности, но в Delphi этого не происходит. Delphi дает разработчику полный доступ к событийной модели работы Windows, максимально упрощая процесс обработки того или иного события. Естественно, невозможно предусмотреть все случаи и полностью инкапсулировать все сообщения Windows, которых более 200. Визуальные компоненты содержат обработчики наиболее общих (с точки зрения ядра Windows) сообщений. При необходимости создания обработчиков других сообщений можно воспользоваться объектно-ориентированной технологией. В этом случае вы создаете объект-наследник того компонента, который должен обрабатывать интересующее вас событие, и специальный метод-обработчик этого события. Но в большинстве случаев вы сможете обойтись теми обработчиками, которые предоставляют стандартные компоненты, включенные в состав Delphi.

    На следующем шаге мы рассмотрим основные события, которые обрабатываются формой.




Предыдущий шаг Содержание Следующий шаг