能不能提供一些代码!
mouse_move怎么响应!
而WM_MENUSELECT又怎么拦截呢?
mouse_move怎么响应!
而WM_MENUSELECT又怎么拦截呢?
解决方案 »
- VB_代码查错
- MSChart中画统计线的时候,StatLine的成员Flag的各个值代表什么含义?在线急等,请教了!!!
- 用winsock进行网络传输,怎样让两台机上的幻灯片播放同步?
- 如何使用PaintPicture在一个PictureBox控件里实现图片的放大缩小
- Winsock 为什么得不到服务器的响应
- 如何根据选择的checkbox内容来查询数据库并显示在DataGrid里面?急
- 求购《ASP组件开发指南》一书
- 有关VB中图形绘制问题,在线等待
- 设定事件
- 如何在VB里给Listview控件的每个Item设置不同的背景色?
- 添加快捷菜单的问题,我很长时间没想出来,请高手帮帮忙
- 窗体延迟用和命令?
Option Explicit
Private Sub Form_Load()
Dim d As String
d = SubClass(Form1)
End Sub
Private Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hWnd, GWL_WNDPROC, lProcOld
End Sub代码 Module1
Option ExplicitDeclare Function AppendMenu Lib "user32" Alias _
"AppendMenuA" (ByVal hMenu As Long, ByVal wFlags _
As Long, ByVal wIDNewItem As Long, ByVal _
lpNewItem As String) As LongDeclare Function GetSystemMenu Lib "user32" _
(ByVal hWnd As Long, ByVal bRevert As Long) As Long
Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" (ByVal hWnd As Long, _
ByVal nIndex As Long, ByVal dwNewLong As Long) As LongDeclare 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 LongPublic Declare Function GetMenuString Lib "user32" Alias "GetMenuStringA" _
(ByVal hMenu As Long, ByVal wIDItem As Long, _
ByVal lpString As String, ByVal nMaxCount As Long, _
ByVal wFlag As Long) As LongPublic 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_MENUSELECT = &H11FPublic lProcOld As LongPublic Function SysMenuHandler(ByVal hWnd _
As Long, ByVal iMsg As Long, ByVal wParam _
As Long, ByVal lParam As Long) As Long
Dim x As Long
Dim astr As String * 256
On Error GoTo errsub
If iMsg = WM_SYSCOMMAND Then
If wParam = IDM_ABOUT Then
MsgBox "About . . .", vbInformation, "About"
Exit Function
End If
ElseIf iMsg = WM_MENUSELECT Then
x = Hex(wParam) And &HFF
GetMenuString lParam, x, astr, 256, 0
If astr <> "" Then
Form1.Label1.Caption = astr
End If
End If
SysMenuHandler = CallWindowProc(lProcOld, _
hWnd, iMsg, wParam, lParam)
errsub:
Exit Function
End FunctionPublic Function SubClass(FormName As Form)
Dim lhSysMenu As Long, lRet As Long lhSysMenu = GetSystemMenu(FormName.hWnd, 0&)
lRet = AppendMenu(lhSysMenu, MF_SEPARATOR, 0&, vbNullString)
lRet = AppendMenu(lhSysMenu, MF_STRING, IDM_ABOUT, "About...")
FormName.Show
lProcOld = SetWindowLong(FormName.hWnd, GWL_WNDPROC, _
AddressOf SysMenuHandler)
End Function
一个是在系统菜单上添加菜单,你可以将函数 SubClass 去掉,另外将 SysMenuHandler
中的
If iMsg = WM_SYSCOMMAND Then
If wParam = IDM_ABOUT Then
MsgBox "About . . .", vbInformation, "About"
Exit Function
End If
部分去掉,如果还是不行再告诉我。