Вверх ↑
Ответов: 4628
Рейтинг: 749
#1: 2024-07-13 07:37:51 ЛС | профиль | цитата
nesco писал(а):
MenuEx не требует запуска всплывающего окна, которое и перехватывает сообщения

Ну, и обычный не должен был требовать.
Уточнить как реализовано в MenuEx.
TrackPopupMenu() требуется окно. Такое окно у нас есть - это Applet или форма, на которой лежит меню. С помощью имеющихся функций KOL добавить свою оконную процедуру для обработки сообщений в Applet.

Отдельное окно, предполагаю, может требоваться в невизуальных приложениях, когда меню отображается в произвольном месте экрана. Тогда в Init() можно определить наличие Applet и использовать либо старый, либо новый метод.
Ага, ещё надо учесть работу, когда все окна программы невидимы, а меню надо отобразить на иконке в трее. Вот для этого могло быть нужно отдельное окно.

В оригинальном компоненте можно попробовать вызывать TrackPopupMenu с флагами TPM_NONOTIFY+TPM_RETURNCMD. Тогда функция будет сама возвращать выбранный пункт без необходимости оконной процедуры.
карма: 26

0
Редактировалось 2 раз(а), последний 2024-07-13 07:47:22