*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.21" SourceFile="vfpx.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * DEFINE CLASS bindwindowseventsproxy AS custom *< CLASSDATA: Baseclass="custom" Timestamp="" Scale="Pixels" Uniqueid="" /> * *m: _msghandler *p: _hwnd *p: _lparam *p: _msg *p: _result *p: _windowproc *p: _wparam * * Name = "bindwindowseventsproxy" _hwnd = 0 _lparam = 0 _msg = 0 _result = .NULL. _windowproc = 0 _wparam = 0 * PROCEDURE Destroy #Define WM_THEMECHANGED 0x031A If Type("This.Parent") # "O" Then Unbindevents(_vfp.HWnd, WM_THEMECHANGED) Endif ENDPROC PROCEDURE Init *!* *!* Add BindWindowsEventsProxy property to _VFP : *!* If Not Pemstatus(_vfp,"BindWindowsEventsProxy", 5) *!* AddProperty(_vfp,"BindWindowsEventsProxy", .Null.) *!* Endif *!* *!* Create BindWindowsEventsProxy object: *!* If Not Vartype(_vfp.BindWindowsEventsProxy) = "O" *!* _vfp.BindWindowsEventsProxy = Newobject("BindWindowsEventsProxy", Addbs(Justpath(This.ClassLibrary))+"vfpx.vcx") *!* Endif *!* *!* Bind to BindWindowsEventsProxy _Msg property changes: *!* Bindevent(_vfp.BindWindowsEventsProxy,"_Msg", This,"_VFPMessageHandler") *!* *!* _VFPMessageHandler procedure *!* Do Case *!* Case _vfp.BindWindowsEventsProxy._Msg = WM_THEMECHANGED *!* *!* Do your theme changing stuff here *!* Endcase *!* Never destroy the BindWindowsEventsProxy object, some other object might be using it #Define WM_THEMECHANGED 0x031A #Define GWL_WNDPROC (-4) Declare Integer GetWindowLong In win32api As apiGetWindowLong ; Integer HWnd, ; Integer nIndex Declare Integer CallWindowProc In win32api As apiCallWindowProc ; Integer lpPrevWndFunc, ; Integer HWnd, ; Integer Msg,; Integer wParam,; Integer Lparam This._WindowProc = apiGetWindowLong(_vfp.HWnd, GWL_WNDPROC) If Type("This.Parent") # "O" Then Bindevent(_vfp.HWnd, WM_THEMECHANGED, This, "_MsgHandler", 4) Endif ENDPROC PROCEDURE _msghandler Lparameters HWnd As Integer, Msg As Integer, wParam As Integer, Lparam As Integer Local lnResult This._hwnd = m.HWnd This._wParam = m.wParam This._lParam = m.lParam This._Msg = m.Msg If Isnull(This._Result) Then m.lnResult = apiCallWindowProc(This._WindowProc, m.HWnd, m.Msg, m.wParam, m.lParam) Else m.lnResult = This._Result This._Result = .Null. Endif Return m.lnResult ENDPROC ENDDEFINE