修改系统菜单,鼠标右健弹出菜单,执行系统菜单事件
来源:互联网 发布:还原mac 编辑:程序博客网 时间:2024/06/01 10:19
(仅供参考)
向系统菜单中添加新项,并且执行对应事件,在窗体任意位置弹出系统菜单,并且执行事件
'窗体
Option Explicit
Private Sub Form_Load()
On Error Resume Next
lhSysMenu = GetSystemMenu(hwnd, 0&)
lRet = AppendMenu(lhSysMenu, MF_SEPARATOR, 0&, vbNullString)
lRet = AppendMenu(lhSysMenu, MF_STRING, IDM_ABOUT, "About...")
Show
ProcOld = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Private 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 lhSysMenu, 0, p.X, p.Y, 0, Me.hwnd, r
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
SetWindowLong hwnd, GWL_WNDPROC, ProcOld
End Sub
'-------------------------------------------------------------
'模块
Option Explicit
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 GetCursorPos Lib "user32" (lpPoint As POINTAPI) 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 AppendMenu Lib "user32" Alias "AppendMenuA" (ByVal hMenu As Long, ByVal wFlags As Long, ByVal wIDNewItem As Long, ByVal lpNewItem As String) As Long
Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
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 ProcOld As Long
Public Const TPM_LEFTALIGN = &H0&
Public Const WM_SYSCOMMAND = &H112
Public Const MF_SEPARATOR = &H800&
Public Const MF_STRING = &H0&
Public Const GWL_WNDPROC = (-4)
Public Const IDM_ABOUT As Long = 1010
Public Const WM_COMMAND = &H111
Public lhSysMenu As Long, lRet As Long
Public Function WindowProc(ByVal hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case iMsg
Case WM_SYSCOMMAND
If wParam = IDM_ABOUT Then
MsgBox "VB Web Append to System Menu Example", vbInformation, "About"
Exit Function
End If
Case WM_COMMAND
If wParam = IDM_ABOUT Then
MsgBox "VB Web Append to System Menu Example", vbInformation, "About"
Exit Function
Else
CallWindowProc ProcOld, hwnd, WM_SYSCOMMAND, wParam, lParam
WindowProc = 0
Exit Function
End If
End Select
WindowProc = CallWindowProc(ProcOld, hwnd, iMsg, wParam, lParam)
End Function
- 修改系统菜单,鼠标右健弹出菜单,执行系统菜单事件
- 屏蔽CDockablePane右击鼠标触发事件弹出右键菜单
- [转]修改菜单(系统菜单)
- 鼠标右击菜单
- 替换系统弹出的菜单
- Android 弹出系统menu菜单
- EditText 长按弹出的上下文菜单(如何修改系统默认弹出的上下文菜单)
- 系统菜单
- 系统菜单
- android系统菜单响应事件
- swing中鼠标右击弹出菜单怎么实现
- 1.1 系统菜单项修改
- XP系统修改开机菜单
- js右击弹出菜单
- 修改鼠标右键菜单
- QT5(11) 鼠标右击菜单 键盘事件
- js更改系统默认鼠标右键菜单
- 在系统菜单中加子菜单
- 用XML+FSO+JS实现服务器端文件的选择
- 调用MCI录制WAV时,控制流率的方法
- 用C#实现汉字转化为拼音
- 动态创建菜单,添加菜单,执行自己的菜单事件
- 程序只运行一个实例,并且把前一个激活
- 修改系统菜单,鼠标右健弹出菜单,执行系统菜单事件
- 在弹出模态对话框(消息框)的同时设置他的位置
- 大数的阶乘
- ANSI颜色使用研究
- SCO5.0.5安装步骤
- 类似于C语言的printf函数
- 仿照SDK编程写的窗口
- 目录选择对话框
- 判断字符串是否是合法的EMail