Nmhdr *pnotifystruct, //указатель на структуру с данными 


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



ЗНАЕТЕ ЛИ ВЫ?

Nmhdr *pnotifystruct, //указатель на структуру с данными

Поиск

afx_msg void memberFn(

NMHDR *pNotifyStruct, //указатель на структуру с данными

LRESULT *result);  //указатель на возвращаемое значение

 

Командные сообщения включаются в карту макросом

 

ON_COMMAND(id, memberFn)

 

(смысл параметров – тот же, что и в предыдущих случаях). Все вышеописанные макросы и заготовки для функций добавляются в программу автоматически мастерами AppWizard (при создании каркаса) и Class Wizard (при манипуляции с классами).

 

К сожалению,мастер Class Wizard не работает с командами, определяемыми пользователем. Они должны включаться в карту сообщений “вручную” макросом

ON_MESSAGE( WM_NAMEMSG, // номер пользовательского сообщения

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

При этом и номер и функцию обработки необходимо определить самостоятельно.Например, так:

 

//в заголовочном файле

#define WM_NAMEMSG (WM_USER+100)

...

afx_msg LRESULT OnNameMsg(WPARAM wParam, LPARAM lParam);

 

Естественно, и в cpp-файле нужно полностью написать соответствующую функцию-обработчик.Номер для своего сообщения следует выбирать из диапазона WM_USER+5 … 0x7FFF среди неиспользованных ранее.

 

Замечание: При добавлении макросов “вручную” в карту обработки сообщений, необходимо это делать за пределами автоматически созданных комментариев-скобок //{{AFX_MSG_MAP ... //}}AFX_MSG_MAP, т.к. строки, содержащиеся между ними, изменяются мастером ClassWizard.

 

В большинстве случаев в MFC нужные сообщения в нужный момент вызываются без написания специальных команд (это за нас делает библиотека или ОС), однако в некоторых случаях их приходится посылать явно с помощью следующих функций:

 

LRESULT CWnd::SendMessage(UINT msg, WPARAM wPm=0, LPARAM lPm=0)

 



Поделиться:


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

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