关闭

给VB窗体添加OnMove事件

511人阅读 评论(0) 收藏 举报

模板内容

 

Public Const WM_LBUTTONDOWN = &H201
Public Const WM_LBUTTONUP = &H202
Public Const GWL_WNDPROC = (-4)
Public Const WM_MOVE = &H3
Public Type POINTAPI
        x 
As Long
        y 
As Long
End Type
Public Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long


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
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 LongAs Long
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As LongAs Long


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 LongAs Long
If Msg = WM_MOVE Then '捕获窗体移动事件
'
MsgBox "A"
'
SendMessage BnHwnd, WM_LBUTTONDOWN, 1, 0
'
SendMessage BnHwnd, WM_LBUTTONUP, 1, 0 '将消息发送到按纽,使其发生CLICK事件
    Form1.OnMove
End If
Newproc 
= CallWindowProc(Oldproc, hwnd, Msg, wp, lp)
End Function

 

给窗体定义一个OnMove函数:

 

Public Sub OnMove()
    
Dim point As POINTAPI
    GetCursorPos point
    Label2.Caption 
= "X:" & point.x & " Y:" & point.y
End Sub

 

在窗体的Form_Load事件加入如下代码:

 

Private Sub Form_Load()
Oldproc 
= SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf Newproc)
End Sub

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:789次
    • 积分:17
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档
    阅读排行