Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.01;
Скачать: CL | DM;

Вниз

Всплывающее меню   Найти похожие ветки 

 
irq   (2003-06-30 10:52) [0]

Задача - выполнить действия, связанные с пунктом всплывающего меню (TPopupMenu в Delphi) в чужой программе. Известные данные - ShortKey этого пункта и его индекс. Как решить задачу? Спасибо.


 
Ян   (2003-06-30 13:48) [1]

нужно получить идентификатор нужного пункта меню
//------------- N-номер пункта ---
MnuID:=GetMenuItemID(MnuHandle,N);
MnuHandle - хэндл того подменю в котором этот пункт
//-------------
sendmessage(WinHandle,WM_COMMAND,makewparam(MnuID,0),0);

для всплывающего меню не проверял,но отличий от обычного
быть не должно
Как сделать через ShortKey - самому интересно, пока не получилось. Теоретически надо получить таблицу акселераторов,
а потом TranslateAccelerator но как?




 
irq   (2003-06-30 15:39) [2]

Этот способ на TPopupMenu не срабатывает :( После следующией прочитанной фразы "...Дескриптор всплывающего меню возвращают всего две функции - CreatePopupMenu и GetSubMenu..." появились сомнения, что это вообще возможно сделать. Для своего приложения дескриптор PopupMenu известен, а для чужого его еще найти нужно. Функция CreatePopupMenu не подходит по понятным причинам, а для функции GetSubMenu(HMENU hmenu, int nPos) на вход подается дескриптор меню, в позиции nPos которого находится данное PopupMenu. Хочется верить, что я ошибаюсь.

А насчет таблицы акселераторов можно попробовать через LoadAccelerators. Но только нужно учеть такой момент "Если указанное функции TranslateAccelerator окно свернуто, то она посылает сообщение WM_COMMAND, только если нажатый акселератор не связан с командой ни одного из элементов меню указанного окна".



Страницы: 1 вся ветка

Текущий архив: 2003.09.01;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
14-1670
Шишкин Илья
2003-08-12 12:59
2003.09.01
Кто-нибудь разбирается в музыке?


14-1562
RIMMER
2003-08-11 23:31
2003.09.01
Как запретить XP theme UI для моей программы


3-1313
gonta
2003-08-08 17:34
2003.09.01
Работа с паролями в БД Paradox


3-1273
dimm
2003-08-11 17:22
2003.09.01
DBLookupCombobox не открывается полностью. Т.е. хочу видеть все


14-1663
Anatoly Podgoretѕky
2003-08-12 14:16
2003.09.01
Просьба заделать эту дырку.