QBASIC文本方式下使用UCDOS特显功能

Author: 湖北 杨万生 庞胜林 Date: 1995-09-01

        PRINT CHR$(14) "[特显命令串及其参数]"
        这种方法只适用于低版本的GW-BASIC,而在5.0以上版的DOS中的QBASIC环境下不一定有效。例如,下面两行程序的作用为在屏幕的中部显示红色的64×48点黑体汉字“希望汉字系统”,并给显示的内容加上黄色的边框:
        PRINT CHR$(14); "CL{-150|150^2@64,48=2(4希望汉字系统}]"
        PRINT CHR$(14); "[CO14R148,150,440,214]"
        这两句程序在BASICA及GW-BASIC下执行时,可以得到正确结果。但在QBASIC下运行时,不能实现特显功能,要想显示正确结果,必须在程序的开头加上SCREEN 12这条语句。这也就是说,QBASIC中只能在图形方式下使用UCDOS的特显功能。
        众所周知,所谓的中西文兼容汉字系统其实只是一种伪文本方式,其本来就工作在图形方式下。因此,若非必要,在作图前不要重新设置显示方式,否则,系统将工作在纯图形方式下,这样就失去了中西文兼容等优秀特点。实际上,我们在编程时之所以要使用汉字系统的特显功能,除了能显示矢量汉字外,更主要的是为了实现文本方式下的图文并茂。,在文本方式下无法使用UCDOS的特显功能无疑是一件憾事。
        目前,国内较优秀的汉字系统的特显功能,一般都是通过修改显示中断向量INT 10H来实现的。当应用程序的显示命令调用中断INT 10H时,首先被特显模块(如UCDOS中的TX.COM)截获,由特显程序模块根据该显示操作中是否含有特显命令引导字符CHR$(14)+"["来决定是否进行特殊显示操作。这种实现方法类似于DOS中的设备驱动程序ANSI.SYS。显然,直接写屏方式下是无法使用特显功能的。
        为了在QBASIC文本方式下使用特显功能,笔者经过试验发现,可以巧妙地利用DOS的控制台I/O设备“CON”来实现在文本方式(当然也可以在图形方式)下使用UCDOS的特显功能。具体使用方法如下:
        OPEN “CON” FOR OUTPUT AS #1
        PRINT #1,CHR$(14)+"[特显命令串及参数]"
        CLOSE #1
        用这种方法,不必对汉字系统做任何修改,简单方便。此法在QBASIC、Quick BASIC及Visual BASIC for DOS等编程环境下试验通过,适用于UCDOS V3.0以及3.1版(UCDOS 3.1下,也可用其提供的通过打印口3使用特显功能的格式)。当然,这种方法也同样适用于具有类似特显功能的其他汉字系统,如CXDOS等。
        (湖北 杨万生 庞胜林)