自分はint 型配列変数を使って。
#ifndef MENUINFO_STRUCTSIZE
#enum global minfo_cbSize = 0
; 構造体のサイズ
#enum global minfo_fMask
; どの値が有効かを示すフラグ。
#const global MIM_MAXHEIGHT $00000001 // cyMax
#const global MIM_BACKGROUND $00000002 // hbrBack
#const global MIM_HELPID $00000004 // dwContextHelpID
#const global MIM_MENUDATA $00000008 // dwMenuData
#const global MIM_STYLE $00000010 // dwStyle
#const global MIM_APPLYTOSUBMENUS $80000000 // 設定は全てのSubメニュー メニューに適用されます
#const global MIM_OPEN $000003C1
#const global MIM_CLOSE $000003C2
#const global MIM_DATA $000003C3
#const global MIM_LONGDATA $000003C4
#const global MIM_ERROR $000003C5
#const global MIM_LONGERROR $000003C6
#const global MIM_MOREDATA $000003CC
#enum global minfo_dwStyle
; メニューのスタイル。
#const global MNS_CHECKORBMP $04000000 // 同じ空間には、チェック マークとビットマップの予約されています。
; チェック マークが描かれている場合は、ビットマップではありません。
; すべてのチェック マークとビットマップが配置されます。
; チェック マークのいくつかの項目を使用し、いくつかのビットマップを使用してメニューを使用します。
#const global MNS_NOTIFYBYPOS $08000000 // ユーザーが選択すると
; WM_COMMAND メッセージの代わりに WM_MENUCOMMAND メッセージを受信します。
; MNS_NOTIFYBYPOS は
; メニューの ヘッダーのスタイルであり、個々 のサブ メニューに適用した場合の影響を与えません。
#const global MNS_AUTODISMISS $10000000 // メニューは、マウスが 約10 秒、メニュー以外の場所にあるときに自動的に閉じます。
#const global MNS_DRAGDROP $20000000 // メニュー項目を、ドラッグ&ドロップ出来るようになります。。
; メニューのオーナー WM_MENUDRAG と WM_MENUGETOBJECT のメッセージを受信します。
#const global MNS_MODELESS $40000000 // メニューがモードレスです
; は、ないメニュー モーダル メッセージ ループ メニューがアクティブな間。
#const global MNS_NOCHECK $80000000 // チェック マークを項目の左側の領域が予約されていません。
; まだ、項目を選択できるがアイテムの横にチェック マークは表示されません。
#enum global minfo_cyMax
; 最大の高さ (ピクセル単位) メニュー。 メニュー項目が使用可能な領域を超えると、スクロール バーが自動的に使用されます。
; デフォルト (0) は、画面の高さです。
#enum global minfo_hbrBack
; メニューの背景に使用するブラシへのハンドル。
#enum global minfo_dwContextHelpID
; ヘルプのコンテキスト ID。 これは、GetMenuContextHelpId と SetMenuContextHelpId 関数で使用される同じ値です。
#enum global minfo_dwMenuData
; アプリケーション定義の値。
#enum global MENUINFO_ELETOTAL
#const global MENUINFO_STRUCTSIZE MENUINFO_ELETOTAL*4
#endif
#if 0
typedef struct tagMENUINFO {
DWORD cbSize;
DWORD fMask;
DWORD dwStyle;
UINT cyMax;
HBRUSH hbrBack;
DWORD dwContextHelpID;
ULONG_PTR dwMenuData;
} MENUINFO, *LPMENUINFO, const *LPCMENUINFO;
dim mi , MENUINFO_ELETOTAL
mi.minfo_cbSize = MENUINFO_STRUCTSIZE
mi.minfo_fMask = 0
mi.minfo_dwStyle = 0
mi.minfo_cyMax = 0
mi.minfo_hbrBack = 0
mi.minfo_dwContextHelpID = 0
mi.minfo_dwMenuData = 0
#endif
#if 1
///////////////////////////////////////////////////////////////////////////////////
#include "user32.as"
#include "gdi32.as"
onexit *exit
#const global HS_BDIAGONAL $00000003
#const global HS_CROSS $00000004
#const global HS_DIAGCROSS $00000005
#const global HS_FDIAGONAL $00000002
#const global HS_HORIZONTAL $00000000
#const global HS_VERTICAL $00000001
CreateHatchBrush HS_FDIAGONAL , 0xffcccc
hCrossBrush = stat
#enum global mid_test = 1
#enum global mid_testB
#enum global mid_testC
CreatePopUpMenu : hMenu(1) = stat
repeat 5
AppendMenu hMenu(1) , 0 , mid_test , "テスト"+cnt
loop
CreateMenu : hMenu = stat
AppendMenu hMenu , 0x10 , hMenu(1) , "menu"
#const mask MIM_STYLE | MIM_APPLYTOSUBMENUS | MIM_BACKGROUND
dim mi , MENUINFO_ELETOTAL
mi.minfo_cbSize = MENUINFO_STRUCTSIZE , mask , MNS_NOCHECK
//mi.minfo_fMask = mask
//mi.minfo_dwStyle = MNS_NOCHECK
//mi.minfo_cyMax = 0
mi.minfo_hbrBack = hCrossBrush
//mi.minfo_dwContextHelpID = 0
//mi.minfo_dwMenuData = 0
SetMenuInfo hMenu , varptr(mi)
SetMenu hwnd , hMenu
DrawMenuBar hwnd
// gsel 0,2
stop
*exit
DeleteObject hCrossBrush
DeleteObject hBrush
end
#endif
の様にしています。