窗体代码:Option ExplicitPrivate Sub Form_Load() prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC) SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc End Sub
Private Sub Form_Unload(Cancel As Integer) SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc End SubPrivate Sub Command1_Click() Me.Cls '清屏 End Sub 标准模块代码:Option ExplicitDeclare 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 Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Public Const GWL_WNDPROC = (-4) Public prevWndProc As Long '窗口程序地址 Public Const WM_LBUTTONDOWN = &O201
Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long On Error GoTo ms: Dim i As Long Dim j As Long
If Msg = &H3 Then If hwnd = Form1.hwnd Then Form1.Print "Left:" & Form1.Left & " Top:" & Form1.Top Else WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) End If Else WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam) End If Exit Function ms: MsgBox Err.Source & "-" & Err.Description End Function
prevWndProc = GetWindowLong(Me.hwnd, GWL_WNDPROC)
SetWindowLong Me.hwnd, GWL_WNDPROC, AddressOf WndProc
End Sub
Private Sub Form_Unload(Cancel As Integer)
SetWindowLong Me.hwnd, GWL_WNDPROC, prevWndProc
End SubPrivate Sub Command1_Click()
Me.Cls '清屏
End Sub
标准模块代码:Option ExplicitDeclare 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
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Public Const GWL_WNDPROC = (-4)
Public prevWndProc As Long '窗口程序地址
Public Const WM_LBUTTONDOWN = &O201
Public Function WndProc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error GoTo ms:
Dim i As Long
Dim j As Long
If Msg = &H3 Then
If hwnd = Form1.hwnd Then
Form1.Print "Left:" & Form1.Left & " Top:" & Form1.Top
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If
Else
WndProc = CallWindowProc(prevWndProc, hwnd, Msg, wParam, lParam)
End If Exit Function
ms:
MsgBox Err.Source & "-" & Err.Description
End Function
加一个按钮
Private Sub Command1_Click()
Label1.Caption = Form1.Top
Label2.Caption =Form1.Left
End Sub
可以用标签的显示