home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9302 / signals / ts / mainwin0.mod < prev    next >
Encoding:
Modula Implementation  |  1992-06-30  |  1.9 KB  |  82 lines

  1. IMPLEMENTATION MODULE MainWin0;
  2.  
  3.  
  4. IMPORT Win,Dos,Gpi, Lib;
  5. FROM OS2DEF IMPORT HMODULE,NULL,BOOL;
  6.  
  7.  
  8. VAR     hmq             : Win.HMQ;
  9.         flFrameFlags    : LSET;
  10.  
  11.         created         : BOOLEAN;
  12.         OldExit         : PROC;
  13.  
  14.  
  15. CONST   szClientClass   = "MainWin0";
  16.  
  17.  
  18. PROCEDURE Exit;
  19. BEGIN
  20.   IF created THEN
  21.     Win.DestroyWindow( hwndFrame);
  22.     Win.DestroyMsgQueue( hmq);
  23.     Win.Terminate( hab);
  24.   END;
  25.   OldExit;
  26. END Exit;
  27.  
  28.  
  29. PROCEDURE Frame( fr : LSET);
  30. BEGIN
  31.   flFrameFlags := fr;
  32. END Frame;
  33.  
  34.  
  35. PROCEDURE Create( WinProc : Win.PFNWP);
  36. VAR ok : BOOLEAN;
  37. BEGIN
  38.   IF NOT created THEN
  39.     hab := Win.Initialize( 0);
  40.     hmq := Win.CreateMsgQueue( hab, 0);
  41.  
  42.  
  43.     ok := Win.RegisterClass( hab,                    (* Anchor block handle    *)
  44.                              FarADR( szClientClass), (* Window class name      *)
  45.                              WinProc,                (* Address of window proc *)
  46.                              Win.CS_SIZEREDRAW,
  47.                              0                       (* No extra window words  *)
  48.                             );
  49.  
  50.     hwndFrame := Win.CreateStdWindow( Win.HWND_DESKTOP,
  51.                                        Win.WS_VISIBLE,
  52.                                        flFrameFlags,
  53.                                        FarADR( szClientClass),
  54.                                        0C,
  55.                                        0,
  56.                                        HMODULE( NIL),
  57.                                        0,
  58.                                        hwndClient);
  59.  
  60.     created := TRUE;
  61.   END;
  62. END Create;
  63.  
  64.  
  65. PROCEDURE WorkLoop;
  66. VAR qmsg : Win.QMSG;
  67.     r    : Win.MRESULT;
  68. BEGIN
  69.   IF created THEN
  70.     WHILE Win.GetMsg( hab, qmsg, HWND( NULL), 0, 0) DO
  71.       r := Win.DispatchMsg( hab, qmsg);
  72.     END;
  73.   END;
  74. END WorkLoop;
  75.  
  76.  
  77. BEGIN
  78.   flFrameFlags := DefaultFRAME;
  79.   created := FALSE;
  80.   Lib.Terminate( Exit, OldExit);
  81. END MainWin0.
  82.