新建一个工程,添加2个窗体(Form1.frm和Form2.frm),添加1个模块(Module1.bas)。
实现目的:Form2停靠在Form1的右侧,移动Form1时Form2跟随移动。
代码:(Form2中无代码,代码写在Form1中和Module1中)

'**************************************************
'窗体代码:Form1.frm
'**************************************************
Option Explicit

Private Const GWL_WNDPROC = (-4)

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Sub Form_Load()
 Form2.Show
 Call ChangeForm2Pos
 PrevWnd = SetWindowLong(Me.hwnd, GWL_WNDPROC, AddressOf WndCallbackProc)
End Sub

Private Sub Form_Unload(Cancel As Integer)
 Unload Form2
 SetWindowLong Me.hwnd, GWL_WNDPROC, PrevWnd
End Sub

'**************************************************
'模块代码:Module1.bas
'**************************************************
Option Explicit

Private Const WM_MOVE = &H3

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

Public PrevWnd As Long

Public Function WndCallbackProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
 If uMsg = WM_MOVE Then
 Call ChangeForm2Pos
 End If
 
 WndCallbackProc = CallWindowProc(PrevWnd, hwnd, uMsg, wParam, lParam)
End Function

Public Sub ChangeForm2Pos()
 With Form2
 .Left = Form1.Left + Form1.Width
 .Top = Form1.Top
 End With
End Sub