Загрузка нового элемента управления Menu в массив элементов управления с подменю

У меня есть меню Mnu1, которое содержит два подменю. Этот пункт меню является частью массива управляющего массива — я добавил запись индекса для Mnu1, равную нулю. Теперь, когда я создаю дополнительные меню в массиве Mnu1 с помощью оператора Load, они создаются, но не содержат подменю, которые были в Mnu1(0). Как я могу автоматически загружать больше экземпляров Mnu1() с помощью этих подменю?

Текущая структура меню:

Mnu

---Mnu1     (with index=0)

-------Mnu1a

-------Mnu1b

---Mnu2

---Mnu3

После использования Load (mnu(1))

Mnu

---Mnu1     (with index=0)

-------Mnu1a

-------Mnu1b

---Mnu1     (with index=1)

---Mnu2

---Mnu3

Требуемая структура меню

Mnu

---Mnu1     (with index=0)

-------Mnu1a

-------Mnu1b

---Mnu1     (with index=1)

-------Mnu1a

-------Mnu1b

---Mnu2

---Mnu3

person user2265784    schedule 10.04.2013    source источник


Ответы (1)


К сожалению, вы просто не можете этого сделать. Вам кажется, что вы каким-то образом копируете Mnu1(0), но это не так. Вместо этого вы просто добавляете новый ванильный элемент управления Menu на тот же уровень иерархии, что и Mnu1(0), просто чтобы иметь возможность ссылаться на элемент управления Menu через индекс.

Родной способ VB сделать то, что вы хотите, состоит в том, чтобы создать структуру меню, используя все элементы управления, которые вы когда-либо использовали, если это возможно. Затем вы сначала устанавливаете для свойства Visible нежелательного в данный момент элемента управления меню значение False. Если вы хотите увидеть свой элемент управления, установите Visible = True.

Единственный другой способ сделать это — использовать вызовы Windows API (GetMenu(), GetSubMenu(), InsertMenu()) для создания новых базовых пунктов меню, а затем создать подкласс окна для получения сообщений WM_COMMAND.

person Mark Bertenshaw    schedule 10.04.2013
comment
Спасибо за ответ, я решил использовать что-то еще. - person user2265784; 10.04.2013
comment
@user2265784 user2265784 Что ты использовал? - person Mark Bertenshaw; 11.04.2013
comment
Я создал два меню Mnu1a и Mnu1b под Mnu. Затем создал Mnu1 внутри них. - person user2265784; 11.04.2013