'=========================================================================== ' Subject: CAPTURE/RESTORE SCREEN ROUTINE Date: 06-22-98 (22:10) ' Author: Douglas Bunger Code: QB, QBasic, PDS ' Origin: www.public.usit.net/dbunger/.. Packet: TEXT.ABC '=========================================================================== DEFINT A-Z '================================================== SUB DoScreen (w$, x1, y1, x2, y2) STATIC DIM f(1000), b(1000), a$(1000) '================================================== ' w$= "get" to capture a window ' "rev" to reverse-video a windows text ' "put" to restore the stored window ' a = 0 IF LCASE$(w$) = "get" THEN IF (x2 - x1) * (y2 - y1) > 920 THEN BEEP: EXIT SUB y = (y2 - y1) \ 2 FOR r = y1 TO y1 + y FOR c = x1 TO x2 a = a + 1: a$(a) = CHR$(SCREEN(r, c, 0)) z = SCREEN(r, c, 1): b(a) = z \ 16: f(a) = z - b(a) * 16 d = y2 - (r - y1) a = a + 1: a$(a) = CHR$(SCREEN(d, c, 0)) z = SCREEN(d, c, 1): b(a) = z \ 16: f(a) = z - b(a) * 16 NEXT c NEXT r END IF IF LCASE$(w$) = "put" THEN FOR r = y1 TO y1 + y FOR c = x1 TO x2 a = a + 1: COLOR f(a), b(a): LOCATE r, c: PRINT a$(a); d = y2 - (r - y1) a = a + 1: COLOR f(a), b(a): LOCATE d, c: PRINT a$(a); NEXT c NEXT r END IF IF LCASE$(w$) = "rev" THEN FOR r = y1 TO y1 + y FOR c = x1 TO x2 a = a + 1: COLOR b(a), f(a): LOCATE r, c: PRINT a$(a); d = y2 - (r - y1) a = a + 1: COLOR b(a), f(a): LOCATE d, c: PRINT a$(a); NEXT c NEXT r END IF END SUB