Вы сказали в комментариях, что используете Shell_NotifyIcon()
для отображения всплывающей подсказки. Ответ на ваш вопрос содержится в документации :
Начиная с Windows XP ( Shell32.dll версия 6.0 ), если пользователь передает указатель мыши поверх значка, с которым связано всплывающее уведомление, оболочка отправляет следующие сообщения:
NIN_BALLOONSHOW. Отправляется, когда отображается воздушный шар (воздушные шары в очереди).
NIN_BALLOONHIDE. Отправляется, когда воздушный шар исчезает. Например, когда значок удален. Это сообщение не отправляется, если всплывающее окно отклонено из-за тайм-аута или если пользователь щелкнет мышью.
Начиная с Windows 7, NIN_BALLOONHIDE также отправляется, когда уведомление с * 1021 Флаг * NIIF_RESPECT_QUIET_TIME пытается отобразить в тихое время (первый час работы пользователя на новом компьютере). В этом случае всплывающее окно вообще не отображается.
NIN_BALLOONTIMEOUT. Отправляется, когда шарик отклонен из-за тайм-аута.
NIN_BALLOONUSERCLICK. Отправляется, когда всплывающее окно отклоняется из-за того, что пользователь щелкнул мышью.
В дополнение к этим сообщениям, начиная с Windows Vista (Shell32.dll версия 6.0.6), если пользователь передает указатель мыши на значок, с которым связано всплывающее уведомление, оболочка Windows Vista также добавляет следующие сообщения:
NIN_POPUPOPEN. Отправляется, когда пользователь наводит курсор на значок, чтобы указать, что вместо стандартной текстовой всплывающей подсказки следует использовать более насыщенный всплывающий интерфейс.
NIN_POPUPCLOSE. Отправляется, когда курсор больше не находится над значком, указывающим, что всплывающий пользовательский интерфейс должен быть закрыт.
Независимо от версии операционной системы, вы можете выбрать, как должен вести себя Shell, вызвав Shell_NotifyIcon
с dwMessage , установленным на NIM_SETVERSION
. Установите uVersion
член структуры NOTIFYICONDATA, на который указывает lpdata , чтобы указать, хотите ли вы, чтобы Windows 2000, Windows Vista или более ранняя версия 5.0 (Windows 95) поведение .
Примечание. Обсуждаемые выше сообщения не являются обычными Windows сообщениями. Они отправляются как значение lParam определенного приложением сообщения, указанного в элементе uCallbackMessage
структуры NOTIFYICONDATA, на который указывает lpdata , когда Shell_NotifyIcon
вызывается с помощью флаг NIM_ADD
установлен в dwMessage .
Итак, для получения этих сообщений вам необходимо указать идентификатор сообщения HWND и Callback в NOTIFYICONDATA
struct при вызове Shell_NotifyIcon()
с dwMessage
, установленным на NIM_ADD
или NIM_MODIFY
:
hWnd
Тип: HWND
A дескриптор окна, которое получает уведомления, связанные со значком в области уведомлений .
...
uCallbackMessage
Тип: UINT
Идентификатор сообщения, определяемый приложением. Система использует этот идентификатор для отправки уведомлений в окно, указанное в hWnd
. Эти уведомления отправляются, когда в ограничивающем прямоугольнике значка происходит событие мыши или зависание, когда значок выбирается или активируется с помощью клавиатуры, или , когда эти действия выполняются в всплывающем уведомлении .
Когда элемент uVersion
равен 0 или NOTIFYICON_VERSION, параметр wParam сообщения содержит идентификатор значка на панели задач, в которой произошло событие. Этот идентификатор может быть длиной 32 бита. Параметр lParam содержит сообщение мыши или клавиатуры, связанное с событием . Например, когда указатель перемещается над значком панели задач, lParam устанавливается на WM_MOUSEMOVE.
Когда элемент uVersion
имеет значение NOTIFYICON_VERSION_4, приложения продолжают получать события уведомлений в виде сообщений, определяемых приложением, через элемент uCallbackMessage
, но с интерпретацией lParam и wParam параметры этого сообщения изменяются следующим образом:
LOWORD (lParam) содержит события уведомления, такие как NIN_BALLOONSHOW, NIN_POPUPOPEN или WM_CONTEXTMENU .
. HIWORD (lParam) содержит идентификатор значка. Идентификаторы значков ограничены длиной 16 бит.
GET_X_LPARAM (wParam) возвращает координату привязки X для событий уведомлений NIN_POPUPOPEN, NIN_SELECT, NIN_KEYSELECT и всех сообщений мыши между WM_MOUSEFIRST и WM_MOUSELAST. Если какое-либо из этих сообщений генерируется клавиатурой, wParam устанавливается в верхнем левом углу значка назначения. Для всех других сообщений wParam не определено.
GET_Y_LPARAM (wParam) возвращает координату привязки Y для событий уведомления и сообщений, как определено для привязки X.
...
Если вы установите флаг NIF_INFO
в элементе uFlags
, используется уведомление в виде всплывающего окна. Подробнее об этих уведомлениях см. всплывающие подсказки .
Итак, чтобы ответить на ваш вопрос, в WndPro c для HWND, который вы указали в В поле NOTIFYICONDATA::hWnd
вы будете искать идентификатор сообщения, указанный в поле NOTIFYICONDATA::uCallbackMessage
, а затем искать уведомление NIN_BALLOONUSERCLICK
в значении lParam
или LOWORD(lParam)
сообщения, в зависимости от того, как вы установили NOTIFYICONDATA::uVersion
поле.