Есть ли простой способ определить, когда всплывающее меню было закрыто? - PullRequest
1 голос
/ 17 марта 2010

Я отображаю всплывающее меню с помощью TrackPopupMenu и хотел бы узнать, когда оно закрывается, щелкнув за его пределами. Я просмотрел все функции меню, но не нашел в этом ничего полезного. Spy ++ сказал мне, что в этом случае оконное сообщение не отправляется.

Итак, есть ли простой способ сделать это без установки крючка для мыши? Спасибо!

1 Ответ

3 голосов
/ 17 марта 2010

[править]
Это лучше. Если вы укажете TPM_RETURNCMD в параметре uFlags, возвращаемое значение будет идентификатором пункта меню элемента, выбранного пользователем. Если пользователь отменяет меню без выбора или возникает ошибка, возвращаемое значение равно нулю.

Цикл меню заканчивается, когда :: TrackPopupMenu () возвращает :) Если был выбран пункт меню, то окно, в котором HWND передан как шестой параметр, получит сообщение WM_COMMAND с идентификатором выбранного элемента. Вероятно, вы можете :: PeekMessage () после :: TrackPopupMenu () вернуться, чтобы увидеть, находится ли WM_COMMAND в очереди.

Если вы хотите получать уведомления, находясь в :: TrackPopupMenu (), вы можете обрабатывать WM_EXITMENULOOP.

...