Наиболм- интересным при программировании на Win API является обработка событии. Если вы всегда программировали на таких языках, как Delphi или VB, то для вас эта система покажется слишком сложной и неудобной. При наличии опыта программирования на С все будет уже знакомым.

Обработка сообщений начинается со следующего цикла:

while GetMessage(pMsg, 0, 0, 0) do begin
TransiateMessage(pMsg);
DispatchMessage(pMsg) ;
end:

Здесь запускается цикл, в котором мы получаем сообщения, пока не произойдет выход из программы. Сообщения читаются с помощью функции GetMessage. Внутри цикла вызываются две функции:

в Transi ateMessage - эта функция переводит сообщения виртуальных клавиш в символьные сообщения;

в Di spatchMessage - функция отправляет сообщения оконному обработчику событий.

В качестве оконного обработчика событий мы указали функцию WindowProc. Через ее параметры передается необходимая информация для определения типа события:

в wnd - окно, в котором произошло событие Одна функция может обрабатывать события разных окон, и отличить их можно по этому параметру;
в Msg - указывает на происшедшее событие;

в wParam и 1 Рагаш - дополнительные параметры, значения которых изменяются в зависимости от события.

Описывать все события, которые можно получить в параметре Msg, нет смысла, потому что их сотни.

В нашей программе мы отслеживаем события WMCREATE (создание окна), WMDESTROY (уничтожение окна) и WMLBUTT0ND0WN (щелчок в окне левой кнопкой мыши).

А как "поймать" щелчок мышью на элементе управления? На первый взгляд если это отдельное окно, то необходимо проверить параметр Wnd, и если он соответствует кнопке, то событие пришло именно от нее. Это ошибка, потому что обработка сообщений от элементов управления происходит немного по-другому. Все они в параметре Msg содержат WM_COMMAND, а вот в параметре 1 Рагаш имеют указатель на окно (элемент управления).

ПРИМЕЧАНИЕ -

Исходный код примера, рассмотренного в листинге 2.6, находится на компакт-диске в каталоге Sources\ch02\WinButton.

2.13.2. Пример приложения с использованием Win API || Оглавление || 2.14. Оптимизация с помощью ассемблера


Delphi в шутку и всерьез: что умеют хакеры



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31