主题:关于 启动时用 QB/L
飞鸟12
[专家分:2830] 发布于 2005-05-13 12:51:00
qb45的帖子中提到了"启动时用 QB/L" [url]http://www.programfan.com/club/showbbs.asp?id=20553[/url]
我用的时候遇到了一些问题,不过现在解决拉
qb4.5的默认目录为E:\qb\qb45,先进入该目录
新建一 记事本 文件,把qb45的程序粘贴进记事本,另存为 mouse.bas 所有文件
再新建一 记事本 文件,输入cmd。另存为 dd.bat , 所有文件。
(说明:也可输入start cmd,另外 文件名可取任意名字,但不能取为cmd.bat,否则会引起死循环...)
双击这个bat文件,进入cmd,显示如下:
E:\qb\qb45>cmd
Microsoft Windows 2000 [Version 5.00.2195]
(C) 版权所有 1985-2000 Microsoft Corp.
E:\qb\qb45>
输入如下:E:\qb\qb45>qb/l
以打开qb4.5
再用ALT+F,ALT+O打开mouse.bas,按F5运行程序,
遗憾的是看不到鼠标
方法二:
新建一 记事本 文件,把qb45的程序粘贴进记事本,另存为 mouse.bas 所有文件.
再新建一 记事本 文件,输入如下内容:
@echo off
cd E:\qb\qb45
qb mouse.bas /l
echo.
另存为 startqb.bat ,所有文件。
双击这个批处理文件,即可打开QB
沙发
飞鸟12 [专家分:2830] 发布于 2005-04-09 13:42:00
这个程序借用了qb45的Mouse (m1%, m2%, m3%, m4%)
'$INCLUDE: 'qb.bi'
DECLARE SUB Mouse (m1%, m2%, m3%, m4%)
DECLARE SUB drawwin (l%, t%, w%, h%, class$)
DECLARE SUB putletters (x%, y%, letters$, colour$)
DECLARE SUB putmouse ()
DECLARE SUB loadmouse ()
DECLARE SUB loadletters ()
DECLARE SUB loadpalettes ()
DIM SHARED mouseshape$, mouseshapew(100), mouseshapeb(100), bkground(100), cx%, dx%
DIM SHARED fonw(1 TO 1880), fonb(1 TO 1880)
SCREEN 12: CLS
CALL loadpalettes
CALL loadletters
CALL loadmouse
LINE (0, 0)-(639, 479), 6, BF
CALL drawwin(50, 50, 300, 300, "Window")
CALL putletters(55, 55, "Windows", "white")
CALL drawwin(100, 100, 200, 30, "Text")
CALL drawwin(200, 200, 50, 30, "Buttom")
CALL putletters(215, 210, "YES", "black")
DO
timenow$ = TIME$
CALL putletters(160, 108, timenow$, "black")
tim = TIMER + 1
WHILE TIMER < tim
CALL putmouse
WEND
CALL putletters(160, 108, timenow$, "white")
LOOP
SUB drawwin (l%, t%, w%, h%, class$)
SELECT CASE class$
CASE "Window", "Buttom"
color1% = 6: color2% = 15: color3% = 7: color4% = 6: color5% = 8: color6% = 0
CASE "ButtomGetFocus"
color1% = 0: color2% = 15: color3% = 7: color4% = 6: color5% = 8: color6% = 0
CASE "ButtomPress"
color1% = 6: color2% = 0: color3% = 8: color4% = 6: color5% = 8: color6% = 0
CASE "Text"
color1% = 6: color2% = 8: color3% = 0: color4% = 15: color5% = 7: color6% = 15
CASE ELSE
END SELECT
LINE (l% - 1, t% - 1)-STEP(w% + 1, h% + 1), color1%, B
LINE (l%, t%)-STEP(w% - 1, h% - 1), color6%, B
LINE (l% + 1, t% + 1)-STEP(w% - 3, h% - 3), color5%, B
LINE (l% + 2, t% + 2)-STEP(w% - 5, h% - 5), color4%, BF
PSET (l%, t%)
DRAW "c" + STR$(color2%) + "nd" + STR$(h% - 1) + "nr" + STR$(w% - 1) + "bm+1,+1"
DRAW "c" + STR$(color3%) + "nd" + STR$(h% - 3) + "r" + STR$(w% - 3)
IF class$ = "Window" THEN
LINE (l% + 2, t% + 2)-STEP(w% - 5, 20), 1, BF
END IF
END SUB
SUB loadletters
DIM letter(1 TO 20)
FOR i = 0 TO 93
LOCATE 1, 1: PRINT CHR$(i + 32)
GET (0, 0)-STEP(7, 15), letter
FOR j = 1 TO 20
fonw(20 * i + j) = letter(j)
NEXT j
LINE (8, 0)-STEP(7, 15), 15, BF
PUT (8, 0), letter, XOR
GET (8, 0)-STEP(7, 15), letter
FOR j = 1 TO 20
fonb(20 * i + j) = letter(j)
NEXT j
NEXT i
LOCATE 1, 1: PRINT " "
END SUB
SUB loadmouse
mouseshape1$ = "c8 m+12,+10 m-6,0 m+5,+10 m-2,+1 m-5,-10 m-4,+4 m+0,-15bm+2,+5p7,8bm-2,-5"
mouseshape2$ = "c8 m+12,+10c7 m-6,0c8 m+5,+10 m-2,+1c15 m-5,-10c8 m-4,+4c15 m+0,-15"
LINE (1, 1)-(15, 25), 15, BF
PSET (2, 2): DRAW mouseshape1$ + mouseshape2$
GET (2, 2)-STEP(12, 21), mouseshapew ''取白色背景上的鼠标
LINE (15, 1)-(30, 25), 0, BF
PSET (16, 2): DRAW mouseshape1$ + mouseshape2$
GET (16, 2)-STEP(12, 21), mouseshapeb ''取黑色背景上的鼠标
cx% = 1: dx% = 1
GET (cx%, dx%)-STEP(12, 21), bkground
oldx = cx%: oldy = dx%
END SUB
SUB loadpalettes
PALETTE 0, 0 * (1 + 256 + 65536)
PALETTE 6, 44 * (1 + 256 + 65536)
PALETTE 7, 52 * (1 + 256 + 65536)
PALETTE 8, 28 * (1 + 256 + 65536)
PALETTE 15, 63 * (1 + 256 + 65536)
END SUB
SUB Mouse (m1%, m2%, m3%, m4%)
''鼠标调用的子程序
DIM inreg AS RegType, outreg AS RegType
inreg.ax = m1%
inreg.bx = m2%
inreg.cx = m3%
inreg.dx = m4%
INTERRUPT &H33, inreg, outreg
m1% = outreg.ax
m2% = outreg.bx
m3% = outreg.cx
m4% = outreg.dx
END SUB
SUB putletters (x%, y%, letters$, colour$)
REM colour$: white black
DIM letter(1 TO 20), bg(1 TO 20)
LettersLen = LEN(letters$)
FOR i = 1 TO LettersLen
LAsc = ASC(MID$(letters$, i, 1)) - 32
IF colour$ = "white" THEN
FOR j = 1 TO 20
letter(j) = fonw(20 * LAsc + j)
NEXT j
PUT (x% + 8 * i - 8, y%), letter, OR
ELSEIF colour$ = "black" THEN
FOR j = 1 TO 20
letter(j) = fonb(20 * LAsc + j)
NEXT j
PUT (x% + 8 * i - 8, y%), letter, AND
END IF
NEXT i
END SUB
SUB putmouse STATIC
CALL Mouse(3, bx%, cx%, dx%)
SELECT CASE bx%
CASE 0
lb% = 0: RB% = 0
CASE 1
lb% = -1: RB% = 0
CASE 2
lb% = 0: RB% = -1
CASE 3
lb% = -1: RB% = -1
END SELECT
IF cx% < 10 THEN cx% = 10
IF dx% < 10 THEN dx% = 10
IF cx% > 627 THEN cx% = 627
IF dx% > 458 THEN dx% = 458
IF oldx <> cx% OR oldy <> dx% THEN
PUT (oldx, oldy), bkground, PSET
GET (cx%, dx%)-STEP(12, 21), bkground
PUT (cx%, dx%), mouseshapew, AND
PUT (cx%, dx%), mouseshapeb, OR
oldx = cx%: oldy = dx%
END IF
END SUB