home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1992-06-30 | 1.9 KB | 82 lines |
- IMPLEMENTATION MODULE MainWin0;
-
-
- IMPORT Win,Dos,Gpi, Lib;
- FROM OS2DEF IMPORT HMODULE,NULL,BOOL;
-
-
- VAR hmq : Win.HMQ;
- flFrameFlags : LSET;
-
- created : BOOLEAN;
- OldExit : PROC;
-
-
- CONST szClientClass = "MainWin0";
-
-
- PROCEDURE Exit;
- BEGIN
- IF created THEN
- Win.DestroyWindow( hwndFrame);
- Win.DestroyMsgQueue( hmq);
- Win.Terminate( hab);
- END;
- OldExit;
- END Exit;
-
-
- PROCEDURE Frame( fr : LSET);
- BEGIN
- flFrameFlags := fr;
- END Frame;
-
-
- PROCEDURE Create( WinProc : Win.PFNWP);
- VAR ok : BOOLEAN;
- BEGIN
- IF NOT created THEN
- hab := Win.Initialize( 0);
- hmq := Win.CreateMsgQueue( hab, 0);
-
-
- ok := Win.RegisterClass( hab, (* Anchor block handle *)
- FarADR( szClientClass), (* Window class name *)
- WinProc, (* Address of window proc *)
- Win.CS_SIZEREDRAW,
- 0 (* No extra window words *)
- );
-
- hwndFrame := Win.CreateStdWindow( Win.HWND_DESKTOP,
- Win.WS_VISIBLE,
- flFrameFlags,
- FarADR( szClientClass),
- 0C,
- 0,
- HMODULE( NIL),
- 0,
- hwndClient);
-
- created := TRUE;
- END;
- END Create;
-
-
- PROCEDURE WorkLoop;
- VAR qmsg : Win.QMSG;
- r : Win.MRESULT;
- BEGIN
- IF created THEN
- WHILE Win.GetMsg( hab, qmsg, HWND( NULL), 0, 0) DO
- r := Win.DispatchMsg( hab, qmsg);
- END;
- END;
- END WorkLoop;
-
-
- BEGIN
- flFrameFlags := DefaultFRAME;
- created := FALSE;
- Lib.Terminate( Exit, OldExit);
- END MainWin0.