afx_msg void OnLButtonUP(UINT nFlags, CPoint point); 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

afx_msg void OnLButtonUP(UINT nFlags, CPoint point);

Поиск

    // как в Листинге 4.

 

Имена обработчиков автоматически определяются при распаковке параметров поступившего сообщения Windows на основе соглашения: имя всегда начинается с префикса ”On”, далее – имя сообщения (получаем, например, OnPaint - см. Листинг 4).

 

Для обработки некоторых стандартных сообщений Windows необходимо знать их параметры (поля wParam и lParam). За распаковку и передачу параметров в обработчик также отвечают макросы. Функции-обработчики при этом должны быть объявлены соответствующим образом (об этом за нас позаботится среда Visual C++). Например, для сообщения WM_LBUTTONUP обработчик имеет вид:

 

afx_msg void OnLButtonUP(UINT nFlags, CPoint point);

 

Для включения в карту извещений от элементов управления применяется макрос

ON_CONTROL(

 wNotifyCode,//код извещения (например, WM_COMMAND или BN_CLICKED)

 id, //идентификатор элемента управления

 memberFn) //имя обработчика

Прототип обработчика имеет вид:

afx_msg void memberFn();

Данный обработчик вызывается только в том случае, если код извещения и идентификатор элемента управления совпадут с аргументами макроса в карте сообщений. Для удобства обработки некоторых стандартных извещений для них заведены специальные макросы, которые могут использоваться наряду с ON_CONTROL:

ON_BN_CLICKED(id,memberFn)

ON_EN_ST_FOCUS(id,memberFn)

ON_LBN_DBLCLK(id,memberFn) и т.д.

 

С появлением в Win32 пользовательских элементов управления (custom control), вместе с извещением потребовалось передавать некоторые данные. В связи с этим было введено новое извещение WM_NOTIFY, позволяющее передавать любое количество информации стандартным образом. В карте сообщений вместо ON_CONTROL необходимо указать ON_NOTIFY, а обработчик объявить следующим образом:

 



Поделиться:


Последнее изменение этой страницы: 2024-06-27; просмотров: 48; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.21 (0.006 с.)