init wcore stuff in lcoreinit, eliminating dependency on messageloop
[lcore.git] / wcore.pas
index 928486fe97730f15347263baa3c0592372694108..e79fc1029af637577bc931e300bddca0ab1298d0 100755 (executable)
--- a/wcore.pas
+++ b/wcore.pas
@@ -1,8 +1,3 @@
-{ Copyright (C) 2005 Bas Steendijk and Peter Green\r
-  For conditions of distribution and use, see copyright notice in zlib_license.txt\r
-  which is included in the package\r
-  ----------------------------------------------------------------------------- }\r
-\r
 unit wcore;\r
 \r
 {\r
@@ -63,6 +58,7 @@ procedure addtask(ahandler:ttaskevent;aobj:tobject;awparam,alparam:longint);
 procedure disconnecttasks(aobj:tobject);\r
 procedure exitmessageloop;\r
 procedure processmessages;\r
+procedure wcoreinit;\r
 \r
 var\r
   onshutdown:procedure(s:ansistring);\r
@@ -272,22 +268,17 @@ 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
-  if (ahwnd = hwndwcore) then begin\r
-   dotasks;\r
-   case auMsg of\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
@@ -299,15 +290,14 @@ begin
     {WINMSG_TASK:dotasks;}\r
 \r
     WM_CLOSE: begin\r
-      handled := true;\r
+      {}\r
     end;\r
     WM_DESTROY: begin\r
-      handled := true;\r
+      {}\r
     end;\r
-   end;\r
+  else\r
+      Result := DefWindowProc(ahWnd, auMsg, awParam, alParam)\r
   end;\r
-\r
-  if not handled then Result := DefWindowProc(ahWnd, auMsg, awParam, alParam)\r
 end;\r
 \r
 \r
@@ -323,11 +313,8 @@ var
                                  lpszMenuName  : nil;\r
                                  lpszClassName : 'wcoreClass');\r
 \r
-procedure messageloop;\r
-var\r
-  MsgRec : TMsg;\r
+procedure wcoreinit;\r
 begin\r
-\r
   if Windows.RegisterClass(MyWindowClass) = 0 then halt;\r
   //writeln('about to create wcore handle, hinstance=',hinstance);\r
   hwndwcore := CreateWindowEx(WS_EX_TOOLWINDOW,\r
@@ -350,6 +337,14 @@ begin
   {$endif}\r
 \r
 \r
+end;\r
+\r
+procedure messageloop;\r
+var\r
+  MsgRec : TMsg;\r
+\r
+begin\r
+\r
   while GetMessage(MsgRec, 0, 0, 0) do begin\r
     TranslateMessage(MsgRec);\r
     DispatchMessage(MsgRec);\r
@@ -370,12 +365,13 @@ end;
 \r
 function ProcessMessage : Boolean;\r
 var\r
-    Msg : TMsg;\r
+    MsgRec : TMsg;\r
 begin\r
     Result := FALSE;\r
-    if PeekMessage(Msg, 0, 0, 0, PM_REMOVE) then begin\r
+    if PeekMessage(MsgRec, 0, 0, 0, PM_REMOVE) then begin\r
       Result := TRUE;\r
-      DispatchMessage(Msg);\r
+      TranslateMessage(MsgRec);\r
+      DispatchMessage(MsgRec);\r
     end;\r
 end;\r
 \r
@@ -386,3 +382,4 @@ end;
 \r
 \r
 end.\r
+\r