'ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДї 'і FILE: TUTOR3_3.BAS і 'і PURPOSE: PB/VISION(tm) LITE Tutorial Example Program і 'ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ 'і For instant help on any PB/VISION(tm) keyword, place the cursor on that і 'і keyword and press <CTRL-F1>. The PB/VISION(tm) index can be accessed і 'і by pressing <SHIFT-F1> twice. The file "PBVLITE.PBH" _must_ be in the і 'і same directory as the PowerBASIC IDE (PB.EXE) for this feature to work і 'і properly. і 'АДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЩ %ISPBU = 0 $INCLUDE "WINDOW.BI" $INCLUDE "MOUSE.BI" $INCLUDE "EVENT.BI" DEFINT A-Z $DYNAMIC %cmColorChange = 1001 SHARED windowColor% APPTITLE &HCF, "TUTOR3_3.BAS - A PB/VISION(tm) LITE DEMO - PRESS <ESC> TO QUIT" APP.GraphicsMode = 1 APP.GraphicsMouse = 1 APPINIT GottaMouse% = MOUSEINIT(buttons%) MOUSECURSORON win1 = WINPOPUP (12, 0, 10, 40, &H9F, 1, &H9F, "OUTPUT WINDOW", &H8F, %DRAGBAR OR %SHADOW OR %NOHORZBORDER OR %NOVERTBORDER) ' - ю 3.3.1 - MAKING THE CODE MORE READABLE ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД PENWINDOW.INIT DO EventNo = GETEVENT(0) SELECT CASE EventNo CASE 102 ' <ESC> event EXIT LOOP CASE %cmColorChange WINRECOLOR win1, windowColor% WINCOLOR win1, windowColor% WINWRITE win1, " Window color change... " CASE ELSE END SELECT LOOP MOUSECURSOROFF APPCLOSE END SUB PENWINDOW.INIT windowColor% = &H9F handle = WINOPEN (6, 61, &H70, 1, &H7F, "PENWINDOW.ROUTINE() WINDOW", &HE0, %DRAGBAR OR %SHADOW) WINDRAWBOX handle%, 1, 1, 3, 54, &H7F70, 1 WINDRAWBOX handle%, 1, 55, 3, 7, &H7F70, 1 WINPRINT handle%, 4, 2, -1, "Foreground" WINPRINT handle%, 6, 2, -1, "Background" WINSHOW handle%, 2, 0, 25, 80 WININSTALLCODE handle%, CODESEG(PENWINDOW.ROUTINE), CODEPTR(PENWINDOW.ROUTINE) PENWINDOW.ROUTINE handle%, 202, 999, 999 ' dummy call END SUB FUNCTION PENWINDOW.ROUTINE% (BYVAL handle%, BYVAL EventNo%, BYVAL row%, BYVAL col%) DIM fore AS BYTE DIM back AS BYTE fore = windowColor% AND &HF ' decode old window color back = (windowColor% AND &HF0) \ 16 SELECT CASE EventNo% CASE 102 WINCLOSE handle EventNo = 0 ' - ю RESPONDING TO WINDOW CLICKS (EVENT #202) ДДДДДДДДДДДДДДДДДДДДДДДДДДД CASE 202 SELECT CASE col CASE 13 TO 60, 999 c = (col - 13) \ 3 SELECT CASE row CASE 4 fore = c CASE 6 back = c CASE 999 CASE ELSE EXIT FUNCTION END SELECT windowColor% = attr(fore, back) WINREFRESHMODE 0 FOR b = 0 TO 15 WINFILL handle, 4, b * 3 + 13, 3, 3, attr(15 - b, b), 32 NEXT WINPRINT handle, 5, 2, -1, STRING$(59, 196) WINPRINT handle, 4, fore * 3 + 14, attr(15 - fore, fore), "ю" WINPRINT handle, 6, back * 3 + 14, attr(15 - back, back), "ю" WINPRINT handle, 2, 56, -1, "&H" + RIGHT$("00" + HEX$(windowColor%), 2) WINPRINT handle, 2, 3, windowColor%, SPACE$(50) WINPRINT handle, 2, 20, windowColor%, "SAMPLE TEXT" WINREFRESHMODE 1 WINREFRESH handle ' - ю RETURNING A MODIFIED EVENT CODE ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД EventNo = %cmColorChange END SELECT CASE 203 WINCLOSE handle% CASE ELSE END SELECT PENWINDOW.ROUTINE% = EventNo END FUNCTION