home *** CD-ROM | disk | FTP | other *** search
/ Gold Fish 3 / goldfish_volume_3.bin / files / dev / e / amigae / rkrmsrc / intuition / windows / winpubscreen.e < prev   
Text File  |  1995-03-26  |  2KB  |  58 lines

  1. -> winpubscreen.e
  2. -> Open a window on the default public screen (usually the Workbench screen)
  3.  
  4. MODULE 'intuition/intuition'  -> Intuition data structures and tags
  5.  
  6. ENUM ERR_NONE, ERR_WIN, ERR_KICK, ERR_PUB
  7.  
  8. RAISE ERR_WIN IF OpenWindowTagList()=NIL,
  9.       ERR_PUB IF LockPubScreen()=NIL
  10.  
  11. -> Open a simple window on the default public screen, then leave it open until
  12. -> the user selects the close gadget.
  13. PROC main() HANDLE
  14.   DEF test_window=NIL, test_screen=NIL
  15.   IF KickVersion(37)=FALSE THEN Raise(ERR_KICK)
  16.   -> Get a lock on the default public screen
  17.   test_screen:=LockPubScreen(NIL)
  18.   -> Open the window on the public screen
  19.   test_window:=OpenWindowTagList(NIL,
  20.                                 [WA_LEFT,  10,  WA_TOP,    20,
  21.                                  WA_WIDTH, 300, WA_HEIGHT, 100,
  22.                                  WA_DRAGBAR,       TRUE,
  23.                                  WA_CLOSEGADGET,   TRUE,
  24.                                  WA_SMARTREFRESH,  TRUE,
  25.                                  WA_NOCAREREFRESH, TRUE,
  26.                                  WA_IDCMP,         IDCMP_CLOSEWINDOW,
  27.                                  WA_TITLE,         'Window Title',
  28.                                  WA_PUBSCREEN,     test_screen,
  29.                                  NIL])
  30.   -> Unlock the screen.  The window now acts as a lock on the screen, and we do
  31.   -> not need the screen after the window has been closed.
  32.   UnlockPubScreen(NIL, test_screen)
  33.   -> Note: set it to NIL to help deal with errors
  34.   test_screen:=NIL
  35.  
  36.   -> If we have a valid window open, run the rest of the program, then clean up
  37.   -> when done.
  38.   handle_window_events(test_window)
  39.  
  40.   -> Note: exit and clean up via handler
  41. EXCEPT DO
  42.   IF test_window THEN CloseWindow(test_window)
  43.   IF test_screen THEN UnlockPubScreen(NIL, test_screen)
  44.   -> Note: we can print a minimal error message
  45.   SELECT exception
  46.   CASE ERR_KICK; WriteF('Error: Needs Kickstart V37+\n')
  47.   CASE ERR_PUB;  WriteF('Error: Could not lock public screen\n')
  48.   CASE ERR_WIN;  WriteF('Error: Failed to open window\n')
  49.   ENDSELECT
  50. ENDPROC
  51.  
  52. -> Wait for the user to select the close gadget.
  53. PROC handle_window_events(win)
  54.   -> Note: we can use E's special message poller
  55.   REPEAT
  56.   UNTIL WaitIMessage(win)=IDCMP_CLOSEWINDOW
  57. ENDPROC
  58.