Two points:Code:Private Sub Form_Load() StartSubclassing Me.hWnd End Sub Private Sub Form_Unload(Cancel As Integer) StopSubclassing End Sub 'Module Option Explicit Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal ndx As Long, ByVal newValue As Long) As Long 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 PostMessage Lib "user32" Alias "PostMessageA" _ (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long) Const GWL_WNDPROC = -4 Public Const WM_PAINT = &HF Public Const WM_SIZING = &H214 ' -------------------------------------------- Dim saveHWnd As Long ' The handle of the subclassed window. Dim oldProcAddr As Long ' The address of the original window procedure Sub StartSubclassing(ByVal hWnd As Long) saveHWnd = hWnd oldProcAddr = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf WndProc) End Sub Sub StopSubclassing() SetWindowLong saveHWnd, GWL_WNDPROC, oldProcAddr End Sub Function WndProc(ByVal hWnd As Long, ByVal uMsg As Long, _ ByVal wParam As Long, ByVal lParam As Long) As Long WndProc = CallWindowProc(oldProcAddr, hWnd, uMsg, wParam, lParam) Select Case uMsg Case WM_SIZING PostMessage hWnd, WM_PAINT, 0 Msgbox("Resizing") End Select End Function
1) PostMessage only supports 3 arguments (not four)
2) WM_SIZE seems not to work properly, so I used WM_SIZING
It works on my computer, and I hope it works on yours.
I hope this helps,
Bye,
Me and my imaginary friend Bob




Reply With Quote