form1代码:
Private Sub Form_Load()
HookForm Me.hWnd
End Sub
Private Sub Form_Unload(Cancel As Integer)
UnHookForm Me.hWnd
End Sub
Moudle1代码:
Private 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 Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const WM_FormMoving = 561
Private Const WM_FormFinishMove = 562
Private Const GWL_WNDPROC = (-4)
Dim PrevProc As Long
Public Function WindowProc(ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
WindowProc = CallWindowProc(PrevProc, hWnd, uMsg, wParam, lParam)
Select Case uMsg
Case WM_FormMoving
Form1.Caption = "窗体移动中"
Case WM_FormFinishMove
Form1.Caption = "移动完成"
End Select
End Function
Public Sub HookForm(ByVal hWnd As Long)
PrevProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookForm(ByVal hWnd As Long)
SetWindowLong hWnd, GWL_WNDPROC, PrevProc
End Sub
博客给出了窗体移动相关代码。包含form1代码,在窗体加载和卸载时调用相应函数;还有Moudle1代码,声明了Windows API函数,定义了常量和变量,实现了窗体移动中及移动完成时标题的变化,通过HookForm和UnHookForm函数进行处理。
3465

被折叠的 条评论
为什么被折叠?



