'第一个问题 '在窗体1上用cmd代码激活窗体2 Private Sub Command1_Click() Load Form2 Form2.Show End Sub'第2个问题 '模块代码 Option ExplicitPublic Declare Function CreateMenu Lib "user32" () As Long Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hWnd As Long, lprc As RECT) As Long Public Declare Function CreatePopupMenu Lib "user32" () As Long Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Public Const MF_STRING = &H0& Public Const MF_POPUP = &H10& Public Const WM_USER = &H400 Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Type POINTAPI x As Long y As Long End Type Public Const GWL_WNDPROC = (-4) Public hMenu As Long Public hmenupopup As Long Public result As Long Public oldwinproc As Long Public Const WM_COMMAND = &H111Public Function OnMenu(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case wMsg Case WM_COMMAND Select Case wParam Case 300 MsgBox "u select new", vbInformation, "hello, world!" Case 301 MsgBox "u select save", vbInformation, "hello, world!" Case 302 MsgBox "u select save as", vbInformation, "hello, world!" End Select End Select OnMenu = CallWindowProc(oldwinproc, hWnd, wMsg, wParam, lParam) End Function'程序代码 Private Sub Form_Load() '窗体Load时加载菜单 hMenu = CreateMenu() hmenupopup = CreatePopupMenu() result = AppendMenu(hmenupopup, MF_STRING, 300, "&New") result = AppendMenu(hmenupopup, MF_STRING, 301, "&Save") result = AppendMenu(hmenupopup, MF_STRING, 302, "Save &As...") result = AppendMenu(hMenu, MF_POPUP, hmenupopup, "&File") oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC) SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf OnMenu End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single) Dim r As RECT Dim p As POINTAPI If Button = vbRightButton Then '如果点击右键弹出菜单 GetCursorPos p TrackPopupMenu hmenupopup, 0, p.x, p.y, 0, Me.hWnd, r End If End SubPrivate Sub Form_Unload(Cancel As Integer) SetWindowLong Me.hWnd, GWL_WNDPROC, oldwinproc End Sub
'在窗体1上用cmd代码激活窗体2
Private Sub Command1_Click()
Load Form2
Form2.Show
End Sub'第2个问题
'模块代码
Option ExplicitPublic Declare Function CreateMenu Lib "user32" () As Long
Public Declare Function AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As Any) As Long
Public Declare Function TrackPopupMenu Lib "user32" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal x As Long, ByVal y As Long, ByVal nReserved As Long, ByVal hWnd As Long, lprc As RECT) As Long
Public Declare Function CreatePopupMenu Lib "user32" () As Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Public Const MF_STRING = &H0&
Public Const MF_POPUP = &H10&
Public Const WM_USER = &H400
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public Type POINTAPI
x As Long
y As Long
End Type
Public Const GWL_WNDPROC = (-4)
Public hMenu As Long
Public hmenupopup As Long
Public result As Long
Public oldwinproc As Long
Public Const WM_COMMAND = &H111Public Function OnMenu(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case wMsg
Case WM_COMMAND
Select Case wParam
Case 300
MsgBox "u select new", vbInformation, "hello, world!"
Case 301
MsgBox "u select save", vbInformation, "hello, world!"
Case 302
MsgBox "u select save as", vbInformation, "hello, world!"
End Select
End Select
OnMenu = CallWindowProc(oldwinproc, hWnd, wMsg, wParam, lParam)
End Function'程序代码
Private Sub Form_Load() '窗体Load时加载菜单
hMenu = CreateMenu()
hmenupopup = CreatePopupMenu()
result = AppendMenu(hmenupopup, MF_STRING, 300, "&New")
result = AppendMenu(hmenupopup, MF_STRING, 301, "&Save")
result = AppendMenu(hmenupopup, MF_STRING, 302, "Save &As...")
result = AppendMenu(hMenu, MF_POPUP, hmenupopup, "&File")
oldwinproc = GetWindowLong(Me.hWnd, GWL_WNDPROC)
SetWindowLong Me.hWnd, GWL_WNDPROC, AddressOf OnMenu
End SubPrivate Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim r As RECT
Dim p As POINTAPI
If Button = vbRightButton Then '如果点击右键弹出菜单
GetCursorPos p
TrackPopupMenu hmenupopup, 0, p.x, p.y, 0, Me.hWnd, r
End If
End SubPrivate Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hWnd, GWL_WNDPROC, oldwinproc
End Sub
树形菜单,
用treeview控件对应数据库无所谓
用来显示菜单调
用的窗体
2问题:我是用数据库显示TREEVIEW
不知道你要不要的着,要的话加我QQ:26743670
而是出现在form1中得 某个容器里
Declare Function SetParent Lib "user32" Alias "SetParent" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
说明
指定一个窗口的新父(在vb里使用:利用这个函数,vb可以多种形式支持子窗口。例如,可将控件从一个容器移至窗体中的另一个。用这个函数在窗体间移动控件是相当冒险的,但却不失为一个有效的办法。如真的这样做,请在关闭任何一个窗体之前,注意用SetParent将控件的父设回原来的那个)
返回值
Long,前一个父窗口的句柄
参数表
参数 类型及说明
hWndChild Long,子窗口的句柄
hWndNewParent Long,hWndChild的新父
注解
可用这个函数在运行期将vb控件置入容器控件内部(比如将一个按钮设成图象或窗体控件的子窗口),或者将控件从一个容器控件移至另一个。控件移至另一个父后,它的位置将由新父的坐标系统决定。这样一来,有必要重新规定控件的位置,使其能在目标位置显示出来