军事模型著名品牌:关于 VB 的窗体移动事件,请再帮我一次,谢谢

来源:百度文库 编辑:中科新闻网 时间:2024/05/01 13:39:09
'上回有个好心人给了我以下代码,但会报什么函数未定义,我是个菜鸟,希望有人再帮我把下面的代码写全面一点,谢谢

'在窗体里加入一个按纽,命名为EventBn 利用EventBn_click()事件来实现对窗体移动事件的处理/
'模块代码如下:
Public Oldproc As Long
Public BnHwnd As Long
Public Function Newproc(ByVal hwnd As Long, ByVal msg As Long, ByVal wp As Long, ByVal lp As Long) As Long
If msg = wm_move Then '捕获窗体移动事件
sendmessage BnHwnd, wm_lbuttondown, 1, 0
sendmessage BnHwnd, wm_lbuttonup, 1, 0 '将消息发送到按纽,使其发生CLICK事件
End If
Newproc = callwindowproc(Oldproc, hwnd, msg, wp, lp)
End Function

'窗体内代码:
Private Sub Form_Load()
BnHwnd = EventBn.hwnd '获得按纽句丙
Oldproc = setwindowlong(Me.hwnd, gwl_wndproc, AddressOf Newproc)
End Sub
Private Sub EventBn_Click()
'在这里添加窗体移动的代码
Print Me.Top & " " & Me.Left
End Sub
哎呀,我好菜的啊
帮我把代码写全啊,谢谢啦
我要在移动窗体的过程中调用某子程序(如不断输出窗体坐)但并不影响窗体的正常移动.

在模块代码的最前面加一句:
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Newproc = callwindowproc(Oldproc, hwnd, msg, wp, lp)
这里面你只定义了两个函数,后面的没有定义