Получение уведомления от общих элементов управления
Общие элементы управления дочерних окон, которые отправляют сообщения уведомления к родительскому окну, когда события, как входные данные от пользователя, возникающих в элементе управления.
Приложение полагается на этих сообщениях уведомления, чтобы определить, какое действие пользователь хочет его выполнить.Наиболее распространенные элементы управления отправляют сообщения уведомления, например сообщения WM_NOTIFY.Большинство управления windows отправляют сообщения уведомления, например сообщения WM_COMMAND.CWnd::OnNotify обработчик сообщений WM_NOTIFY.Как и в случае с CWnd::OnCommand реализация OnNotify отправляет сообщение уведомления в OnCmdMsg для обработки в сопоставлениях сообщения.Запись сообщение-сопоставления для обработки уведомлений ON_NOTIFY.Дополнительные сведения см. в разделе Техническая примечание 61. сообщения ON_NOTIFY и WM_NOTIFY.
Кроме того, производный класс может обрабатывать собственные сообщения уведомления с помощью отражения «сообщения». Дополнительные сведения см. в разделе Техническая примечание 62. Отражение сообщений для элементов управления windows forms.
Получить положение курсора в сообщении уведомления
Иногда полезно задать текущее положение курсора, когда некоторые сообщения уведомления получены общим элементом управления.Например, было бы полезно задать текущее расположение курсора, когда общий элемент управления получает сообщение уведомления NM_RCLICK.
Простой способ сделать это с помощью вызова CWnd::GetCurrentMessage.Однако этот метод только извлекает позицию курсора во время было отправлено сообщение.Поскольку курсор может быть перемещена, поскольку было отправлено сообщение необходимо вызвать CWnd::GetCursorPos для получения текущей позиции курсора.
![]() |
---|
CWnd::GetCurrentMessage должно быть вызван только в обработчике сообщений. |
Добавьте следующий код к телу сообщения обработчика сообщения уведомлений (в данном примере NM_RCLICK):
CPoint cursorPos;
cursorPos.x = GetCurrentMessage()->pt.x;
cursorPos.y = GetCurrentMessage()->pt.y;
На этом этапе расположение курсора мыши хранится в объекте cursorPos.
См. также
Ссылки
Создание и использование элементов управления