| Автор
| Сообщение |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
| Цитата: | Кстати, сам MS в том же ослике никаких таких MAINMENU не использует. Там стоит объект класса ToolbarWindow32(для VCL это TToolBar) с кнопками и при нажатии на любую их них вызывается POPUPMENU функцией TrackPopupMenu(Ex).
|
Как оказалось, я ошибался.
При нажатии на кнопку тулбара-мэйнменю хитрож@#ые MS не вызывают POPUPMENU. Там вываливается обыкновенная панелька класса BaseBar и на ней расположен тулбар (или даже не один) с кнопками в качестве пунктов меню.
Естественно, имея такой расклад, мы можем обработать любое мышиное и клавиатурное сообщение.
| Цитата: | | Но как по координатам можно узнать пункт меню? Оно ведь не имеет HWnd. |
Оказывается, API-шное меню все-таки имеет хэндл.
И найти его в принципе довольно просто - по классу #32768.
Другое дело - определить, что это именно наше меню, потому что иногда на экране бывает несколько меню (хотя дочерние легко опознать по наличию значения в Parent Window).
| Описание: |
|
| Размер: |
13.37 KB |
| Просмотрено: |
1520 раз(а) |

|
|
|
| В начало |
|
 |
|
|
 |
 Шурик
Я живу тут....

Возраст: 42
Знак зодиака: 
Зарегистрирован: 15.01.2003
Сообщения: 1951
Откуда: Киев
|
|
|
Цитата |
|
Серьёзно ты покопался. Чем разбирался?
_________________ Ответ готов, готов ли твой вопрос? |
|
| В начало |
|
 |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
Инфу об окнах и их классах получал вот этой прогой: Spy32 by Krichmar Kobi.
С осликом просто: заходим в пункт Избранное, выбираем какую-нить ссылку, говорим: переименовать, ну и дальше все понятно...
Та же история с меню кнопки Пуск.
Ну а с АПИ-шным меню все случайно вышло: однажды одно из них просто заглючило и не убралось с экрана при потере фокуса...
8)
|
|
| В начало |
|
 |
 Ktf
Администратор

Возраст: 32
Знак зодиака: 
Зарегистрирован: 15.05.2005
Сообщения: 1502
Откуда: localhost
|
|
|
Цитата |
|
| dogma писал(а): | Вопрос такой. Как обработать нажатие правой клавиши мышки на MainMenu. При это нужно из пункта в меню (на котором было произведено нажатие) взять значения некоторых свойств.
У меню есть подпункты. |
WM_MENURBUTTONUP Notification
________________________________________________________
The WM_MENURBUTTONUP message is sent when the user releases the right mouse button while the cursor is on a menu item.
Syntax
| Код: | WM_MENURBUTTONUP
WPARAM wParam
LPARAM lParam; |
Parameters
wParam
Specifies the position of the item when the mouse was released.
lParam
Handle to the menu containing the item.
Return Value
Remarks
The WM_MENURBUTTONUP message allows applications to provide a context-sensitive menu—also known as a shortcut menu—for the menu item specified in this message. To display a context-sensitive menu for a menu item, call the TrackPopupMenuEx function with TPM_RECURSE.
|
|
| В начало |
|
 |
|