主题:让QB 支持中文 变量名,函数名
只要把 变量名,函数名 转换成 西文就可以
当然不是手工,下面是一个例子
'在QBasic中使用鼠标
DECLARE SUB 鼠标 (which!)
DECLARE SUB 鼠标初始化 ()
DECLARE SUB 鼠标状态 () '鼠标X坐标,鼠标Y坐标,鼠标左边按钮,鼠标右边按钮
DECLARE SUB 鼠标隐藏 ()
DECLARE SUB 鼠标显示 ()
DIM SHARED 鼠标左边按钮, 鼠标右边按钮, 鼠标X坐标, 鼠标Y坐标
'-----例子开始-------------------->>>
SCREEN 12
鼠标初始化
鼠标显示
CLS
DO
'获取鼠标状态
鼠标状态
LOCATE 2, 1
PRINT "Mouse "
PRINT " Left Button :"; 鼠标左边按钮 '鼠标左钮状态
PRINT " Right Button:"; 鼠标右边按钮 '鼠标右钮状态
PRINT " X Position:"; 鼠标X坐标 '鼠标位置X
PRINT " Y Position:"; 鼠标Y坐标 '鼠标位置Y
PRINT
PRINT
IF 鼠标左边按钮 = -1 THEN '按下左侧钮画线
LINE -(鼠标X坐标 + 3, 鼠标Y坐标), 5
ELSEIF 鼠标右边按钮 = -1 THEN '按下右侧钮画线
LINE -(鼠标X坐标, 鼠标Y坐标 + 3), 6
ELSE
LINE -(鼠标X坐标, 鼠标Y坐标), 3 '移动时画线
END IF
'获取键盘按键状态
k$ = INKEY$
LOOP UNTIL k$ = CHR$(27) '按下Esc结束
'-----例子结束--------------------<<<
SUB 鼠标 (which)
STATIC mouser$, AX%, bx%, cx%, dx%
'0 = Mouse Init
'1 = Mouse Driver
'2 = Mouse Put
'3 = Mouse Status
'4 = Mouse Hide
'5 = Mouse Show
IF which = 0 THEN
'mouser$ = SPACE$(57)
asm$ = ""
asm$ = asm$ + CHR$(&H55) 'PUSH BP
asm$ = asm$ + CHR$(&H89) + CHR$(&HE5) 'MOV BP,SP
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HC) 'MOV BX,[BP+0C]
asm$ = asm$ + CHR$(&H8B) + CHR$(&H7) 'MOV AX,[BX]
asm$ = asm$ + CHR$(&H50) 'PUSH AX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HA) 'MOV BX,[BP+0A]
asm$ = asm$ + CHR$(&H8B) + CHR$(&H7) 'MOV AX,[BX]
asm$ = asm$ + CHR$(&H50) 'PUSH AX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H8) 'MOV BX,[BP+08]
asm$ = asm$ + CHR$(&H8B) + CHR$(&HF) 'MOV CX,[BX]
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H6) 'MOV BX,[BP+06]
asm$ = asm$ + CHR$(&H8B) + CHR$(&H17) 'MOV DX,[BX]
asm$ = asm$ + CHR$(&H5B) 'POP BX
asm$ = asm$ + CHR$(&H58) 'POP AX
asm$ = asm$ + CHR$(&H1E) 'PUSH DS
asm$ = asm$ + CHR$(&H7) 'POP ES
asm$ = asm$ + CHR$(&HCD) + CHR$(&H33) 'INT 33
asm$ = asm$ + CHR$(&H53) 'PUSH BX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HC) 'MOV BX,[BP+0C]
asm$ = asm$ + CHR$(&H89) + CHR$(&H7) 'MOV [BX],AX
asm$ = asm$ + CHR$(&H58) 'POP AX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HA) 'MOV BX,[BP+0A]
asm$ = asm$ + CHR$(&H89) + CHR$(&H7) 'MOV [BX],AX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H8) 'MOV BX,[BP+08]
asm$ = asm$ + CHR$(&H89) + CHR$(&HF) 'MOV [BX],CX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H6) 'MOV BX,[BP+06]
asm$ = asm$ + CHR$(&H89) + CHR$(&H17) 'MOV [BX],DX
asm$ = asm$ + CHR$(&H5D) 'POP BP
asm$ = asm$ + CHR$(&HCA) + CHR$(&H8) + CHR$(&H0) 'RETF 0008
mouser$ = asm$
AX% = 0
bx% = 0
cx% = 0
dx% = 0
鼠标 1
MouseInitAx% = AX%
END IF
IF which = 1 THEN
DEF SEG = VARSEG(mouser$)
mouser% = SADD(mouser$)
CALL Absolute(AX%, bx%, cx%, dx%, mouser%)
END IF
IF which = 2 THEN
AX% = 4
cx% = X%
dx% = Y%
bx% = 0
鼠标 1
END IF
IF which = 3 THEN
AX% = 3
鼠标 1
鼠标左边按钮 = ((bx% AND 1) <> 0)
鼠标右边按钮 = ((bx% AND 2) <> 0)
鼠标X坐标 = cx%
鼠标Y坐标 = dx%
END IF
IF which = 4 THEN
AX% = 2
bx% = 0
cx% = 0
dx% = 0
鼠标 1
END IF
IF which = 5 THEN
AX% = 1
bx% = 0
cx% = 0
dx% = 0
鼠标 1
END IF
END SUB
SUB 鼠标隐藏
鼠标 4
END SUB
SUB 鼠标初始化
鼠标 0
END SUB
SUB 鼠标显示
鼠标 5
END SUB
SUB 鼠标状态 '鼠标X坐标, 鼠标Y坐标,鼠标左边按钮,鼠标右边按钮
鼠标 3
END SUB
当然不是手工,下面是一个例子
'在QBasic中使用鼠标
DECLARE SUB 鼠标 (which!)
DECLARE SUB 鼠标初始化 ()
DECLARE SUB 鼠标状态 () '鼠标X坐标,鼠标Y坐标,鼠标左边按钮,鼠标右边按钮
DECLARE SUB 鼠标隐藏 ()
DECLARE SUB 鼠标显示 ()
DIM SHARED 鼠标左边按钮, 鼠标右边按钮, 鼠标X坐标, 鼠标Y坐标
'-----例子开始-------------------->>>
SCREEN 12
鼠标初始化
鼠标显示
CLS
DO
'获取鼠标状态
鼠标状态
LOCATE 2, 1
PRINT "Mouse "
PRINT " Left Button :"; 鼠标左边按钮 '鼠标左钮状态
PRINT " Right Button:"; 鼠标右边按钮 '鼠标右钮状态
PRINT " X Position:"; 鼠标X坐标 '鼠标位置X
PRINT " Y Position:"; 鼠标Y坐标 '鼠标位置Y
IF 鼠标左边按钮 = -1 THEN '按下左侧钮画线
LINE -(鼠标X坐标 + 3, 鼠标Y坐标), 5
ELSEIF 鼠标右边按钮 = -1 THEN '按下右侧钮画线
LINE -(鼠标X坐标, 鼠标Y坐标 + 3), 6
ELSE
LINE -(鼠标X坐标, 鼠标Y坐标), 3 '移动时画线
END IF
'获取键盘按键状态
k$ = INKEY$
LOOP UNTIL k$ = CHR$(27) '按下Esc结束
'-----例子结束--------------------<<<
SUB 鼠标 (which)
STATIC mouser$, AX%, bx%, cx%, dx%
'0 = Mouse Init
'1 = Mouse Driver
'2 = Mouse Put
'3 = Mouse Status
'4 = Mouse Hide
'5 = Mouse Show
IF which = 0 THEN
'mouser$ = SPACE$(57)
asm$ = ""
asm$ = asm$ + CHR$(&H55) 'PUSH BP
asm$ = asm$ + CHR$(&H89) + CHR$(&HE5) 'MOV BP,SP
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HC) 'MOV BX,[BP+0C]
asm$ = asm$ + CHR$(&H8B) + CHR$(&H7) 'MOV AX,[BX]
asm$ = asm$ + CHR$(&H50) 'PUSH AX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HA) 'MOV BX,[BP+0A]
asm$ = asm$ + CHR$(&H8B) + CHR$(&H7) 'MOV AX,[BX]
asm$ = asm$ + CHR$(&H50) 'PUSH AX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H8) 'MOV BX,[BP+08]
asm$ = asm$ + CHR$(&H8B) + CHR$(&HF) 'MOV CX,[BX]
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H6) 'MOV BX,[BP+06]
asm$ = asm$ + CHR$(&H8B) + CHR$(&H17) 'MOV DX,[BX]
asm$ = asm$ + CHR$(&H5B) 'POP BX
asm$ = asm$ + CHR$(&H58) 'POP AX
asm$ = asm$ + CHR$(&H1E) 'PUSH DS
asm$ = asm$ + CHR$(&H7) 'POP ES
asm$ = asm$ + CHR$(&HCD) + CHR$(&H33) 'INT 33
asm$ = asm$ + CHR$(&H53) 'PUSH BX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HC) 'MOV BX,[BP+0C]
asm$ = asm$ + CHR$(&H89) + CHR$(&H7) 'MOV [BX],AX
asm$ = asm$ + CHR$(&H58) 'POP AX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&HA) 'MOV BX,[BP+0A]
asm$ = asm$ + CHR$(&H89) + CHR$(&H7) 'MOV [BX],AX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H8) 'MOV BX,[BP+08]
asm$ = asm$ + CHR$(&H89) + CHR$(&HF) 'MOV [BX],CX
asm$ = asm$ + CHR$(&H8B) + CHR$(&H5E) + CHR$(&H6) 'MOV BX,[BP+06]
asm$ = asm$ + CHR$(&H89) + CHR$(&H17) 'MOV [BX],DX
asm$ = asm$ + CHR$(&H5D) 'POP BP
asm$ = asm$ + CHR$(&HCA) + CHR$(&H8) + CHR$(&H0) 'RETF 0008
mouser$ = asm$
AX% = 0
bx% = 0
cx% = 0
dx% = 0
鼠标 1
MouseInitAx% = AX%
END IF
IF which = 1 THEN
DEF SEG = VARSEG(mouser$)
mouser% = SADD(mouser$)
CALL Absolute(AX%, bx%, cx%, dx%, mouser%)
END IF
IF which = 2 THEN
AX% = 4
cx% = X%
dx% = Y%
bx% = 0
鼠标 1
END IF
IF which = 3 THEN
AX% = 3
鼠标 1
鼠标左边按钮 = ((bx% AND 1) <> 0)
鼠标右边按钮 = ((bx% AND 2) <> 0)
鼠标X坐标 = cx%
鼠标Y坐标 = dx%
END IF
IF which = 4 THEN
AX% = 2
bx% = 0
cx% = 0
dx% = 0
鼠标 1
END IF
IF which = 5 THEN
AX% = 1
bx% = 0
cx% = 0
dx% = 0
鼠标 1
END IF
END SUB
SUB 鼠标隐藏
鼠标 4
END SUB
SUB 鼠标初始化
鼠标 0
END SUB
SUB 鼠标显示
鼠标 5
END SUB
SUB 鼠标状态 '鼠标X坐标, 鼠标Y坐标,鼠标左边按钮,鼠标右边按钮
鼠标 3
END SUB