ウィンドウのメニュー表示のためのクラス『Menu』『PopupMenu』を提供します。

Dim SFC
Set SFC=CreateObject("SfcMini.tools")
Execute SFC.Include("<Menu.vbs>")





Menuクラスには、以下のパブリックメソッドがあります。

hMenu
 引数はありません。
 戻り値として、メニューハンドルを返します。

AppendPopupMenu(wIDNewItem,lpNewItem)
 wIDNewItemで指定されたハンドルを持つポップアップメニューを、lpNewItem(文字列)で指定されたメニュー名で表示するように設定します。
 戻り値はありません。

SetMenu(hWnd)
 作成されたメニューを、hWndをハンドルに持つウインドウで表示するように設定します。
 戻り値はありません。

PopupMenuクラスには、以下のパブリックメソッドがあります。

hMenu
 引数はありません。
 戻り値として、メニューハンドルを返します。

AppendMenu(wIDNewItem,lpNewItem)
 lpNewItem(文字列)で指定されたメニューを追加します。wIDNewItemには、アイテムIDを整数値で、もしくはイベント関数を文字列で指定します。
 戻り値として、WinFormクラスのRegisterEventで用いることの出来るアイテムIDを返します。

AppendSeparator
 引数はありません。メニューにセパレータを追加します。
 戻り値はありません。

AppendPopupMenu(wIDNewItem,lpNewItem)
 wIDNewItemで指定されたハンドルを持つポップアップメニューを、lpNewItem(文字列)で指定されたメニュー名で表示するように設定します。
 戻り値はありません。

サンプルコード

 ウィンドウプロシージャのサンプルコードに以下のコードを追加すると、メニューが表示されます。

冒頭部分に追加
Execute SFC.Include("<Menu.vbs>")



InitInstance関数に追加
Dim MenuClass,PopupMenuClass1,PopupMenuClass2
set MenuClass=new Menu
set PopupMenuClass1=new PopupMenu
set PopupMenuClass2=new PopupMenu
Call MenuClass.AppendPopupMenu(PopupMenuClass1.hMenu,"Menu")
Call PopupMenuClass1.AppendMenu(11,"1-1")
Call PopupMenuClass1.AppendMenu(12,"1-2")
Call PopupMenuClass1.AppendSeparator
Call PopupMenuClass1.AppendPopupMenu(PopupMenuClass2.hMenu,"2nd Menu")
Call PopupMenuClass2.AppendMenu(21,"2-1")
Call PopupMenuClass2.AppendMenu(22,"2-2")
Call MenuClass.SetMenu(hWnd)














実行結果
Menu

添付されているサンプルスクリプト、WinForm.vbsも参考にしてください。