VisualBasic应用程序的几种打印方法

VisualBasic应用程序的几种打印方法,第1张

打印是编制应用程序过程中最复杂的事情之一,不同的打印机提供了各种不同的功能。编写能充分利用打印机性能的子程序与编写应用程序的其它部分一样都很困难。庆幸的微软的Windows平台使打印工作变得相对容易了。

最近,笔者编制出一套综合试题库管理系统,完成试题的我、自动组卷及打印试卷等工作,在编程时,也碰到了打印问题,笔者找到了几种打印方法,现将它们整理出来,以飧读者,希望能给您的工作提供一点方便。

一、采用Visual Basic提供简单的打印函数PrintForm方法

应用程序窗体的PrintForm方法时,Visual Basic把窗体的位图送到当前打印机。该方法的优点在于它几乎不需要任何编程,但也有很大缺陷。最为突出的是当低分辨率图形在高分辨率打印机上打印时,其结果令人无法满意,会产生锯齿。下面代码将在打印机上打印窗体。

Private Sub Command1_Click() '用PrintForm打印

Me.PrintForm '打印窗体的可见区域

End Sub

二、用Printer对象

用Printer对象可以进行高分辨率输出,但要想产生复杂的打印输出,编程较为繁琐。Printer对象代表系统确省的打印机。Printer对象支持许多由窗体和图形框所支持的属性和方法,三种对象都有画线和画方框。应用程序可用以下列代码在Printer对象上画出一平方英寸的方框。它离左上角二英寸。注意:打印机以twips来测量距离。每英寸有1440个twips。

Printer.Line(2*1440,2*1440)-Step(1440,1440), ,B

打印机、从窗体和图形框都有Circle、PaintPicture、Print、Pset、TextHeight、TextWidth方法。使用这些方法,应用程序可以为打印机生成高分辨率输出。

打印文本直接用Print方法,见下列代码:

Printer.Print “Hello,China ComputerWorld!” ‘打印字符串

Printer对象还有一些窗体和图形框都没有方法:

·NewPage告诉打印机,程序对当前输出页的发送已经结束。Printer对象应开始新的一页。

·EndDoc告诉Visual Basic,程序创建文档结束。VISUAL BASIC应将它发送到物理打印机上打印。

·KillDoc取消当前打印作业。应用程序应该终止由EndDoc和KillDoc所设定的每个打印作业。

·Zoom属性用于定义打印输出的缩放因子。

·Copies属性用于定义打印的副本数目。

三、采用直接将数据传送打印机的方法进行打印输出

该方法也不太实用。有两种方法将数据送往打印机。第一种是用Print # 方法,就象将数据写入一个文件一样写数据。另一种方法写端口,但不是送文本,而是送特定的PCL语言,PCL表示打印控制语言(Print Control Language)。它是一种特殊语言,用转义代码来控制打印机的具体动作。因为此方法太繁琐,本文不做太多介绍,见谅

功能:打印一个字符

入口参数:DX=数据寄存器端口地址

BL=超时参数

AL=打印字符的代码

AH=打印机状态

print proc

push dx

push ax

out dx,al

inc dx

wait:xor cx,cx ----->这里不明白查询参数怎么查询65536次的?

假设一致未就绪,第一次查询后,LOOP指令使CX减1,得FFFFH,不为0,继续循环,直到cx为1,共65536?

wait1:in al,dx

mov ah,al

test al,80h

jnz next不忙碌,则转

loop wait1 ----->为什么查询参数bl不先减1,就又开始读状态信息。

是不是要loop wait1和dec bl对调下呢?

试想,BL够减65536次吗?每查询65536次,减1

dec bl 超时参数减1

jnz wait

and ah,0f8h

or ah,1

jmp exit

next:inc dx

mov al,0dh

out dx,al

mov al,0ch

jmp $+2

out dx,al

and ah,0f8h ----->0f8h=1111 1000为什么要表示出错,联机,无纸,应答,不忙碌呢?

这是硬件定义的

exit:xor ah,48h ----->xor ah,48h和下面的都看不懂是什么意思了.

pop dx

mov al,dl

这三句,即保存ah,又保留AL的原有状态

pop dx

ret

print endp


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11972639.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存