您的位置:首页 > 其它

自定义处理窗体的移动消息WM_MOVE

2005-03-16 15:06 411 查看
标准模块中:Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As LongPublic 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 LongPublic Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)Public Const WM_MOVE = &H3
Public procOld As Long '保存原来的窗体处理的地址
消息回调函数Public Function SysProc(ByVal hwnd As Long, ByVal iMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongStatic i As Integer, j As Integer If iMsg = WM_MOVE Then MsgBox "Move" '先处理自定义消息SysProc = CallWindowProc(procOld, hwnd, iMsg, wParam, lParam)'再处理系统定义消息End Function
'窗口Private Sub Form_Load() 'procOld = GetWindowLong(Me.hwnd, GWL_WNDPROC)procOld = SetWindowLong(hwnd, GWL_WNDPROC, AddressOf SysProc) '获得原消息处理句柄,并将消息处理转交自定义函数End SubPrivate Sub Form_Unload(Cancel As Integer) SetWindowLong hwnd, GWL_WNDPROC, procOldEnd Sub

注意点:请千万要在Form_Unload中还原原有的信息处理循环函数调用地址,否则程序运行将出错!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐