>.ctl32_OldProc = GetWindowLong(This.ctl32_controlHwnd, GWL_WNDPROC) >Bindevent(This.ctl32_controlHwnd, WM_PAINT, This, [ctl32_WM_Paint], 1) >>
.ctl32_OldProc = GetWindowLong(_vfp.HWnd, GWL_WNDPROC)Procedure ctl32_WM_Paint:
Lparameters tnHWnd As Integer, tnMsg As Integer, tnwParam As Integer, tnLparam As Integer With This If tnMsg = WM_PAINT Then ?Transform(tnHWnd, [@0]) .CTL32_SETBORDER() Endif m.lnResult = CallWindowProc(.ctl32_OldProc, tnHWnd, tnMsg, tnwParam, tnLparam) Endwith Return m.lnResultTha above never fires now. Are you saying I should change the window procedure of the control window to that of _VFP? like:
.ctl32_VFPProc = GetWindowLong(_vfp.HWnd, GWL_WNDPROC) .ctl32_CTLProc = GetWindowLong(This.ctl32_controlHwnd, GWL_WNDPROC) SetWindowLong(.ctl32_controlHwnd, GWL_WNDPROC, .ctl32_VFPProc)This way I would get the WM_PAINT messages, where? The more I read about this, the more confused I get, if I understand, what that last code does is subclass the window. Do you have any links where I can read about concepts regarding this? I started 6 hours ago, now I want to learn this badly.