Menu

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Menu

Сообщение iolaus » 31.08.2004 (Вт) 20:33

как отследить открыта какая-то менюшка или нет????
This message will self destruct in five seconds!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 31.08.2004 (Вт) 20:55

У менюшек нет флага отображаемости... Я там всё перерыл, во всяком случае :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Сообщение iolaus » 31.08.2004 (Вт) 21:36

жалко%(
This message will self destruct in five seconds!!!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 01.09.2004 (Ср) 11:42

"Не верю" (c) Станиславский :)
Имеется ввиду какое-то конкретное меню? Можно перебирать все окна системы, выбирая только те из них, которые являются менюшками (класс #32768 PopupMenu), смотреть его итемы.
Lasciate ogni speranza, voi ch'entrate.

ZlydenGL
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 148
Зарегистрирован: 13.08.2004 (Пт) 10:02

Сообщение ZlydenGL » 01.09.2004 (Ср) 12:00

Или еще проще - на каждое разворачивание меню вешать заполнение массива. А потом просто смотреть, какие записи в массиве есть ;)

Код: Выделить всё
Dim Menu_Array()

Private Sub mnuMy_click()
Redim Preserve Menu_Array(Ubound(Menu_Array)+1)
Menu_Array(Ubound(Menu_Array))=mnuMy.Index
End Sub


Только не забудь в теле формы допустим дать команду Redim Menu_Array(0). Ну и надо подумать, по какому событию надо вычеркивать индекс из массива - но это ИМХО уже дело техники!
Покой нам только снится!!! И то редко. Поскольку нет в мире совершенства, а есть только стремление к оному.

iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Сообщение iolaus » 01.09.2004 (Ср) 13:26

да меню конкретное, оно в моем же проекте находится...

с масивом не получится, потому что мне надо отлавливать видимо она на экране или нет...

а что там с перебором менюшек?? и класом, это можно, как???
This message will self destruct in five seconds!!!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.09.2004 (Ср) 13:45

Попробуй ещё делать сабклассинг своего окна и отлавливай WM_ENTERMENULOOP и WM_EXITMENULOOP.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

iolaus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 19.03.2002 (Вт) 18:33
Откуда: Москва

Сообщение iolaus » 01.09.2004 (Ср) 15:21

отлично получилось... спасибо
This message will self destruct in five seconds!!!

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.09.2004 (Ср) 19:29

alibek писал(а):"Не верю" (c) Станиславский :)
Имеется ввиду какое-то конкретное меню? Можно перебирать все окна системы, выбирая только те из них, которые являются менюшками (класс #32768 PopupMenu), смотреть его итемы.

О! подскажи, плз. Как получить по hWnd меню его hMenu, или наоборот? Как посмотреть итемы меню, если известно hWnd, но неизвестно hMenu?

Я в эту сторону копался, но чего-то ниччё у меня не вышло...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.09.2004 (Чт) 9:06

tyomitch, э... А разве API GetMenu(hWnd) этого не выполняет?
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.09.2004 (Чт) 10:44

alibek писал(а):А разве API GetMenu(hWnd) этого не выполняет?

Нет - она возвращает прикреплённое к окну меню, а не соответствующее ему.
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.09.2004 (Чт) 13:11

И правда...
Тогда, тогда... Тогда надо погружаться в дебри MSDN :) Вынырну, скажу что нашел :)
Lasciate ogni speranza, voi ch'entrate.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 02.09.2004 (Чт) 13:28

Похоже, ни фига.
Есть, правда, API MenuItemFromPoint, но это видимо не совсем то, я так понял, что функция возвращает итемы для заданного hMenu в указанной точке.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.09.2004 (Чт) 17:35

О, вот, говорят MN_GETHMENU мне поможет. Сейчас попробую...
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.09.2004 (Чт) 18:01

Пробуй, пробуй :)
EnumWindows не перечисляет менюшных окон, щас проверил...
А в описании MenuItemFromPoint сказано: если hWnd==NULL, а hMenu суть PopupMenu, то функция найдёт хэндл менюшного окна. Как-то она же его находит...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.09.2004 (Чт) 18:22

Перечисляет прекрасно. Но я уже его бросил :-) Я тебе щас рабочую версию намылю, чтобы ты подивился.
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.09.2004 (Чт) 18:45

Дааааа...

У человека наверняка простецкое стандартное бейсиковское меню, а ты ему щас ownerdrawn superclassed предложишь? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 02.09.2004 (Чт) 20:11

owner-drawn опционально, а суперклассинг никто и не заметит...
Ладно, кто знает способ лучше - пусть предложит.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot, Yandex-бот и гости: 7

    TopList