home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / basic / pbvl010.zip / TUTOR3_3.BAS < prev    next >
BASIC Source File  |  1994-02-10  |  4KB  |  157 lines

  1. '┌─────────────────────────────────────────────────────────────────────────┐
  2. '│    FILE: TUTOR3_3.BAS                                                   │
  3. '│ PURPOSE: PB/VISION(tm) LITE Tutorial Example Program                    │
  4. '├─────────────────────────────────────────────────────────────────────────┤
  5. '│ For instant help on any PB/VISION(tm) keyword, place the cursor on that │
  6. '│ keyword and press <CTRL-F1>.  The PB/VISION(tm) index can be accessed   │
  7. '│ by pressing <SHIFT-F1> twice.  The file "PBVLITE.PBH" _must_ be in the  │
  8. '│ same directory as the PowerBASIC IDE (PB.EXE) for this feature to work  │
  9. '│ properly.                                                               │
  10. '└─────────────────────────────────────────────────────────────────────────┘
  11.  
  12. %ISPBU = 0
  13.  
  14. $INCLUDE "WINDOW.BI"
  15. $INCLUDE "MOUSE.BI"
  16. $INCLUDE "EVENT.BI"
  17.  
  18.     DEFINT A-Z
  19.     $DYNAMIC
  20.  
  21.     %cmColorChange = 1001
  22.  
  23.     SHARED windowColor%
  24.  
  25.     APPTITLE &HCF, "TUTOR3_3.BAS - A PB/VISION(tm) LITE DEMO - PRESS <ESC> TO QUIT"
  26.  
  27.     APP.GraphicsMode = 1
  28.     APP.GraphicsMouse = 1
  29.  
  30.     APPINIT
  31.  
  32.     GottaMouse% = MOUSEINIT(buttons%)
  33.     MOUSECURSORON
  34.  
  35.     win1 = WINPOPUP (12, 0, 10, 40, &H9F, 1, &H9F, "OUTPUT WINDOW", &H8F, %DRAGBAR OR %SHADOW OR %NOHORZBORDER OR %NOVERTBORDER)
  36.  
  37. ' - ■ 3.3.1 - MAKING THE CODE MORE READABLE ──────────────────────────────
  38.  
  39.     PENWINDOW.INIT
  40.  
  41.     DO
  42.         EventNo = GETEVENT(0)
  43.  
  44.         SELECT CASE EventNo
  45.  
  46.             CASE 102                        ' <ESC> event
  47.                 EXIT LOOP
  48.  
  49.             CASE %cmColorChange
  50.                 WINRECOLOR win1, windowColor%
  51.                 WINCOLOR win1, windowColor%
  52.                 WINWRITE win1, " Window color change... "
  53.  
  54.             CASE ELSE
  55.  
  56.         END SELECT
  57.  
  58.     LOOP
  59.  
  60.     MOUSECURSOROFF
  61.     APPCLOSE
  62.     END
  63.  
  64.  
  65. SUB PENWINDOW.INIT
  66.  
  67.     windowColor% = &H9F
  68.  
  69.     handle = WINOPEN (6, 61, &H70, 1, &H7F, "PENWINDOW.ROUTINE() WINDOW", &HE0, %DRAGBAR OR %SHADOW)
  70.  
  71.     WINDRAWBOX handle%, 1, 1, 3, 54, &H7F70, 1
  72.     WINDRAWBOX handle%, 1, 55, 3, 7, &H7F70, 1
  73.     WINPRINT handle%, 4, 2, -1, "Foreground"
  74.     WINPRINT handle%, 6, 2, -1, "Background"
  75.  
  76.     WINSHOW handle%, 2, 0, 25, 80
  77.  
  78.     WININSTALLCODE handle%, CODESEG(PENWINDOW.ROUTINE), CODEPTR(PENWINDOW.ROUTINE)
  79.  
  80.     PENWINDOW.ROUTINE handle%, 202, 999, 999    ' dummy call
  81.  
  82. END SUB
  83.  
  84.  
  85. FUNCTION PENWINDOW.ROUTINE% (BYVAL handle%, BYVAL EventNo%, BYVAL row%, BYVAL col%)
  86.  
  87.     DIM fore AS BYTE
  88.     DIM back AS BYTE
  89.  
  90.     fore = windowColor% AND &HF        ' decode old window color
  91.     back = (windowColor% AND &HF0) \ 16
  92.  
  93.     SELECT CASE EventNo%
  94.  
  95.         CASE 102
  96.             WINCLOSE handle
  97.             EventNo = 0
  98.  
  99. ' - ■ RESPONDING TO WINDOW CLICKS (EVENT #202) ───────────────────────────
  100.  
  101.         CASE 202
  102.  
  103.             SELECT CASE col
  104.  
  105.                 CASE 13 TO 60, 999
  106.  
  107.                     c = (col - 13) \ 3
  108.  
  109.                     SELECT CASE row
  110.  
  111.                         CASE 4
  112.                             fore = c
  113.                         CASE 6
  114.                             back = c
  115.                         CASE 999
  116.  
  117.                         CASE ELSE
  118.                             EXIT FUNCTION
  119.                     END SELECT
  120.  
  121.                     windowColor% = attr(fore, back)
  122.  
  123.                     WINREFRESHMODE 0
  124.  
  125.                     FOR b = 0 TO 15
  126.                         WINFILL handle, 4, b * 3 + 13, 3, 3, attr(15 - b, b), 32
  127.                     NEXT
  128.  
  129.                     WINPRINT handle, 5, 2, -1, STRING$(59, 196)
  130.                     WINPRINT handle, 4, fore * 3 + 14, attr(15 - fore, fore), "■"
  131.                     WINPRINT handle, 6, back * 3 + 14, attr(15 - back, back), "■"
  132.                     WINPRINT handle, 2, 56, -1, "&H" + RIGHT$("00" + HEX$(windowColor%), 2)
  133.                     WINPRINT handle, 2, 3, windowColor%, SPACE$(50)
  134.                     WINPRINT handle, 2, 20, windowColor%, "SAMPLE TEXT"
  135.  
  136.                     WINREFRESHMODE 1
  137.  
  138.                     WINREFRESH handle
  139.  
  140. ' - ■ RETURNING A MODIFIED EVENT CODE ────────────────────────────────────
  141.  
  142.                     EventNo = %cmColorChange
  143.  
  144.             END SELECT
  145.  
  146.         CASE 203
  147.             WINCLOSE handle%
  148.  
  149.         CASE ELSE
  150.  
  151.     END SELECT
  152.  
  153.     PENWINDOW.ROUTINE% = EventNo
  154.  
  155. END FUNCTION
  156.  
  157.