X-Git-Url: http://www.lcore.org/git/lcore.git/blobdiff_plain/4782a5c5afee47721cc617daa40dd29828342c2b..d63fdd677fc6ab221d92999630627bd1a0b8afd4:/wcore.pas?ds=inline diff --git a/wcore.pas b/wcore.pas index 40505ef..928486f 100755 --- a/wcore.pas +++ b/wcore.pas @@ -30,6 +30,9 @@ interface end; tltimer=class(tlcomponent) + private + fenabled : boolean; + procedure setenabled(newvalue : boolean); public ontimer:tnotifyevent; initialevent:boolean; @@ -37,8 +40,8 @@ interface prevtimer:tltimer; nexttimer:tltimer; interval:integer; {miliseconds, default 1000} - enabled:boolean; nextts:integer; + property enabled:boolean read fenabled write setenabled; constructor create(aowner:tcomponent);override; destructor destroy;override; end; @@ -62,7 +65,7 @@ procedure exitmessageloop; procedure processmessages; var - onshutdown:procedure(s:string); + onshutdown:procedure(s:ansistring); implementation @@ -96,6 +99,13 @@ end; {------------------------------------------------------------------------------} +procedure tltimer.setenabled(newvalue : boolean); +begin + fenabled := newvalue; + nextts := 0; + initialdone := false; +end; + constructor tltimer.create; begin inherited create(AOwner); @@ -262,17 +272,22 @@ function MyWindowProc( var MsgRec : TMessage; a:integer; + handled:boolean; begin Result := 0; // This means we handled the message + handled := false; + {MsgRec.hwnd := ahWnd;} MsgRec.wParam := awParam; MsgRec.lParam := alParam; - dotasks; - case auMsg of + if (ahwnd = hwndwcore) then begin + dotasks; + case auMsg of {$ifndef threadtimer} WM_TIMER: begin + handled := true; if msgrec.wparam = timerid_wcore then begin a := wcore_timehandler; killtimer(hwndwcore,timerid_wcore); @@ -284,14 +299,15 @@ begin {WINMSG_TASK:dotasks;} WM_CLOSE: begin - {} + handled := true; end; WM_DESTROY: begin - {} + handled := true; end; - else - Result := DefWindowProc(ahWnd, auMsg, awParam, alParam) + end; end; + + if not handled then Result := DefWindowProc(ahWnd, auMsg, awParam, alParam) end; @@ -357,7 +373,7 @@ var Msg : TMsg; begin Result := FALSE; - if PeekMessage(Msg, hwndwcore, 0, 0, PM_REMOVE) then begin + if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then begin Result := TRUE; DispatchMessage(Msg); end;