1

Mnu12 つのサブメニューを含むメニューがあります。このメニュー項目は、コントロール配列の配列部分です。0 に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 に答える