Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.09.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.01 c
4-1715
BillyJeans
2003-07-01 09:23
2003.09.01
CreateProcess или что делаю не так?


3-1320
Alex_74
2003-08-06 14:16
2003.09.01
Установка фильтра по полю даты в ApolloTable


1-1467
Rel_
2003-08-11 08:22
2003.09.01
использ-ие delphi в builder е


14-1612
Мазут Береговой
2003-08-12 10:41
2003.09.01
Ну, тока шо прикололся! :-)


14-1560
Всеволод Соловьёв
2003-08-12 11:23
2003.09.01
Глюкобаги форума





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский