動態創建菜單,鼠標右鍵彈出菜單,執行相應的鼠標事件。
形式
選項顯式
私有子窗體_Load()
hMenu = CreateMenu()
hmenupopup = CreatePopupMenu()
Result = Appendmenu (h menuppopup,MF _ string,300," New ")。
result = Appendmenu(hmenupup,MF _ string,301," Save ")。
result = Appendmenu(hmenupup,MF _ string,302,“另存為”)。
Result = Appendmenu (hmenu,MF _ popup,hmenupopup,“文件”)
oldwinproc = GetWindowLong(me . hwnd,GWL_WNDPROC)
SetWindowLong Me.hWnd,GWL_WNDPROC,地址OnMenu
末端接頭
私有子窗體_MouseDown(按鈕為整數,Shift為整數,x為單值,y為單值)
像RECT壹樣暗淡
Dim p As POINTAPI
如果Button = vbRightButton,則
GetCursorPos p
TrackPopupMenu hmenupopup,0,p.x,p.y,0,Me.hWnd,r
如果…就會結束
末端接頭
私有子窗體_Unload(取消為整數)
SetWindowLong Me.hWnd,GWL_WNDPROC,oldwinproc
末端接頭
組件
選項顯式
公共聲明函數create menu Lib“user 32”()為Long
公共聲明函數AppendMenu Lib“user 32”別名“AppendMenuA”(ByVal hMenu為Long,ByVal wFlags為Long,ByVal wIDNewItem為Long,ByVal lpNewItem為Any)為Long
公共聲明函數trackpupmenu Lib“user 32”(ByVal hMenu為Long,ByVal wFlags為Long,ByVal x為Long,ByVal y為Long,ByVal nReserved為Long,ByVal hWnd為Long,lprc為RECT)為Long
公共聲明函數CreatePopupMenu Lib "user32 "()為Long
公共聲明函數SetWindowLong Lib“user 32”別名“SetWindowLongA”(ByVal hWnd為Long,ByVal nIndex為Long,ByVal dwNewLong為Long)為Long
公共聲明函數CallWindowProc Lib“user 32”別名“CallWindowProcA”(ByVal lpPrevWndFunc As Long、ByVal hWnd As Long、ByVal Msg As Long、ByVal wParam As Long、ByVal lParam As Long)長
公共聲明函數GetWindowLong Lib“user 32”別名“GetWindowLongA”(ByVal hWnd為Long,ByVal nIndex為Long)
公共聲明函數GetCursorPos Lib " user 32 "(LP point As POINTAPI)為Long
公共常量MF _ STRING = & ampH0 & amp;
公共常量MF _ POPUP = & amph 10 & amp;
公共Const WM _ USER = & ampH400
公共類型RECT
左等長
頂端壹樣長
壹樣長
底部壹樣長
結束類型
公共類型POINTAPI
x壹樣長
只要
結束類型
公共常數GWL_WNDPROC = (-4)
公共hMenu作為長
公共hmenupopup壹樣長
公共結果為長
Public oldwinproc As Long
公共Const WM _ COMMAND = & ampH111
公共函數OnMenu(ByVal hWnd為Long,ByVal wMsg為Long,ByVal wParam為Long,ByVal lParam為Long)為Long
選擇案例wMsg
案例WM_COMMAND
選擇案例wParam
案例300
MsgBox“u select new”,vbInformation,“hello,world!”
案例301
MsgBox“u select save”,vbInformation,“hello,world!”
案例302
MsgBox“u select另存為”,vbInformation,“hello,world!”
結束選擇
結束選擇
on menu = CallWindowProc(oldwinproc,hWnd,wMsg,wParam,lParam)
結束功能