BASIC语言历史悠久,近年来发展迅速。BASIC语言的结构化程度高,易于理解,很适合广大的编程人员使用。而第三代BASIC语言的功能更是日臻完善、强大,使用人员更多。 逆@风@者
本文意在向编程经验不十分丰富的读者介绍用BASIC语言设计Windows风格的图形用户接口,起一点抛砖引玉的作用,不妥之处望不吝赐教。程序 在VGA(用Screen 12语句设置)方式下运行,可在Quick BASIC、MS BASIC或Visual BASIC for MS-DOS下编译。另外需要说明的是程序中设置颜色使用的都是调色板位置号,一个调色板位置号并不固定代表某种特定颜色,而是可以由编程者通过PALETTE语句或PALETTE USING语句自行指定的。当然,一般情况下我们使用系统缺省的调色板颜色。
1.读点阵字模交叉显示汉字及ASCII字符。
这里要用到UCDOS 3.1的HZK16和ASC16两个字模文件,该功能模块的代码如下:
SUB DispHz (HzCol%, HzRow%, Color%, HzStr$)
DIM i1, i2, i3, I, c1, c2, f, g, HzChar, AscChar AS INTEGER
DIM HzBy AS STRING * 32
DIM AscBy AS STRING * 16
DIM l, HzRec AS LONG
OPEN "HZK16" FOR BINARY AS #1 `打开汉字库文件
OPEN "ASC16" FOR BINARY AS #2 `打开ASCII码字库文件
HzLen% = LEN(HzStr$) `计算字符串长度
HzPos% = 1 `置字符串的首字节为当前字节
WHILE HzPos% <= HzLen% `字符串显示完前一直循环
I = ASC(MID$(HzStr$, HzPos%, 1)) `获取当前字符的ASCII值
IF I > &HA0 THEN `判断是否为汉字内码
IF f = 0 THEN `f为零则该字节为汉字区码
c1 = I - &HA1 `计算区码
f = -1 `置f为非零
ELSE `f不为零则该字节为汉字位码
c2 = I - &HA1 `计算位码
f = 0 `置f为零
HzRec = c1 * 94 c2 `计算汉字在字库中的记录号
l = HzRec * 32 1 `计算汉字在字库中的起始字节位置
GET #1, l, HzBy `从l开始读取32字节
FOR i1 = 0 TO 15 `字模垂直方向16行点
FOR i2 = 0 TO 1 `每行16个点对应的两个字节
HzChar = ASC(MID$(HzBy, i1 * 2 i2 1, 1)) `每个字节的ASCII值
FOR i3 = 0 TO 7 `每个字节的8位
IF (HzChar (2 & (7 - i3))) AND &H1 THEN `若该位是1
PSET (HzCol% i2 * 8 i3, HzRow% i1), Color% `画点
END IF
NEXT i3
NEXT i2
NEXT i1
HzCol% = HzCol% 16 `将光标置于下一个字符的左上角
END IF
ELSE `不是汉字内码则为ASCII码
l = I * 16 1 `计算ASCII字符在字库中的起始字节位置
GET #2, l, AscBy `从l开始读取16字节
FOR i1 = 0 TO 15
`字模垂直方向16行点,每行对应1个字节
AscChar = ASC(MID$(AscBy, i1 1, 1)) `每个字节的ASCII值
FOR i3 = 0 TO 7 `每个字节的8位
IF (AscChar (2 & (7 - i3))) AND &H1 THEN `若该位是1
PSET (HzCol% i3, HzRow% i1), Color% `画点
END IF
NEXT i3
NEXT i1
HzCul% = HzCul% 8 `光标置于下一个字符的左上角
END IF
HzPos% = HzPos% 1 `置字符串的下一个字节为当前字节
WEND
CLOSE
END SUB
参数HzCol%、HzRow%是所要显示字符串的左上角坐标,Color%是字符串的颜色,HzStr$ 是要显示的字符串,其中可包含汉字、图形符号和ASCII字符。
2.Windows风格图形界面。
Windows界面简洁、美观、标准,用BASIC语言的图形函数可以很方便地生成一个Windo ws风格界面。
先用VIEW (0, 0)-(639, 479), 3设置背景色,再调用下面的过程生成窗口,调用一次生成一个窗口。参数Le%、Top%、Ri%、Bo%指定窗口左上角和右下角的坐标,FrmCol%、TitCo l%是工作区和标题栏背景色,Title$、Menu$是标题和菜单的文字内容。例如,以下调用将生成一个主窗口和一个子窗口:
MyForm 30, 30, 609, 440, 7, 4, "程序主窗口", "文件[F] 选项[O] 窗口[W] 帮助[H]"
MyForm 70, 90, 569, 400, 15, 1, "程序子窗口", "文件[F] 编辑[E] 搜索[S] 运行[R] 帮助[H]"
过程代码如下:
SUB MyForm (Le%, Top%, Ri%, Bo%, FrmCol%, TitCol%, Title$, Menu$) 本文章更多内容:1 - 2 - 3 - 下一页>> |