1

我有一个Mnu1包含两个子菜单的菜单。此菜单项是控件数组的数组部分 - 我已将索引条目添加Mnu1为零。现在,当我使用 Load 语句在数组中创建更多菜单时Mnu1,它们会被创建,但它们不包含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
4

1 回答 1

1

不幸的是,你不能这样做。您认为您正在以某种方式复制 Mnu1(0),但这不是正在发生的事情。相反,您只需将新的普通菜单控件添加到与 Mnu1(0) 相同的层次结构级别,这样您就可以方便地通过索引引用菜单控件。

做你想做的事情的本机 VB 方法是使用你曾经使用过的所有控件来创建你的菜单结构,如果可能的话。然后,您最初将当前不需要的菜单控件的 Visible 属性设置为 False。当你想看到你的控件时,设置 Visible = True。

唯一的其他方法是使用 Windows API 调用(GetMenu()、GetSubMenu()、InsertMenu())来创建新的基础菜单项,然后子类化窗口以接收 WM_COMMAND 消息。

于 2013-04-10T12:26:26.203 回答