Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Меню (вопрос сложный) Добавлено: 20.03.05 09:16  

Автор вопроса:  Vit | Web-сайт: www.home-soft.jino-net.ru
Пример:
    Dim hMenu As Long, hSubMenu As Long, hSubMenuID As Long
    hMenu = GetMenu(Me.hWnd)
    hSubMenu = GetSubMenu(hMenu, 0)
    hSubMenuID = GetMenuItemID(hSubMenu, 2)

Почему при скрытом (Visible=False) я не могу полчить SubMenu (т.е. hSubMenu=0)?

Цель такова: при нажатии на кнопку вылетает вслывающее меню и пользователь выбирает нужный пункт. Но мне нужно, чтобы муню было отформатировано специальным образом, т.е. значки, тип меню (MF_SEPARATOR, MF_BITMAP, MF_CALLBACKS и т.п.)

В коде после получения hSubMenuID я вызываю функцию
    ModifyMenu(...)

Вопрос: как в конце концов можно получить этот ... идентификатор?

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 20.03.05 10:55
Думаю что ответ тебя мало порадует, но все же:

VB при скрытии он полностью удаляет менюшку, т.е. он его не скрывает, а просто удаляет, а при показе - снова созадет. Собственно поэтому ты и не можешь получить подменю - его просто нет :))

Т.е. ты либо работаешь с меню на чистом АПИ, либо на чистом VB, выбор за тобой...

Ответить

Номер ответа: 2
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #2 Добавлено: 20.03.05 11:06
Да, и если пойдёшь по API, то имей в виду, что GetMenuItemID возвращает 0, если у элемента есть подменю. Поэтому сразу переходи на GetMenuItemInfo.

Ответить

Номер ответа: 3
Автор ответа:
 Vit



Вопросов: 68
Ответов: 62
 Web-сайт: www.home-soft.jino-net.ru
 Профиль | | #3
Добавлено: 21.03.05 11:05
Понятно, я бы хотел пойти полностью с API, но им трудно создавать и удалять пункты меню, тем более обрабатывать их события. Я создают некоторое меню с индексом 0, а потом Load(...) и Unload(...). Если у вас есть примеры работы с API - присылайте. И как в конце концов получить ID для пункта меню, исходя из вышесказанного?

Ответить

Номер ответа: 4
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #4
Добавлено: 21.03.05 13:57
Ну скажем самый лучшеи способ изучения, открытие MSDN на страничке посвященной менюшкам, создать меню, сабклассить форму и смотреть что на нее приходит при кликах... WM_COMMAND приходит и ID менюшки, который ты задал сам... Вот только аккуратней надо быть, т.к. WM_COMMAND же вызывается и при нажатии на кнопку и пр. Т.е. тебе необходим уникальный ID...

Ответить

Номер ответа: 5
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #5 Добавлено: 21.03.05 14:15
Уникальный, но только в пределах самой менюшки :) Дело в том, что там передаётся ещё и флаг, показывающий, пришло сообщение от меню или от контрола.

Ответить

Номер ответа: 6
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #6 Добавлено: 21.03.05 14:31
Да, и если хочешь пример по API - то мы тут писАли как-то...
http://bbs.vbstreets.ru/viewtopic.php?p=56536#56536

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам