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