打印机表单动态设置研究与实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
打印机表单动态设置研究与实现

打印机表单动态设置研究与实现   [摘要]针式打印机打印分为分页打印和连续不分页打印,但利用Printer对象在不同的操作系统下进行打印设计差异较大,尤其是动态设置打印纸的类型,及动态改变打印纸的长度。在Windows98下可以很简单的利用Printer.Width和Printer.Height进行设置,但在Windows2000及XP下却相当困难。   [关键词]Printer 动态设置 连续不分页打印 分页打印   中图分类号:TP3 文献标识码:B 文章编号:1002-6908(2007)032-048-02      一、简介      打印是很多应用程序中都需要的功能,也是开发的一个难点所在,尤其是要求连续打印长度任意的表单,并且要求打印完不走纸的情况。类似这样的打印任务因其长短不一,需要在程序中自动计算出单据的长度并自动设定相应的纸张。   在VB下使用Printer对象对针式打印机进行打印程序设计时,因操作系统不同导致设计方法也不相同,在Windows98中将Printer.PaperSize设为256(自定义大小),再通过Printer.   Height、Printer.Width设为所要求的值即可实现,而Win2000/   XP下Printer.PaperSize=256却提示无效属性值,也就无法完成所要求的功能。      二、打印机页形设置原理      在运行 Windows 95、Windows 98 或 Windows Me 系统上,可以用高度(长度)和宽度或预定义的纸张大小来定义自定义页面大小。基于 Windows NT 或 Windows 2000及XP的系统仅使用定义的页形来指定页面大小。纸张的大小由DevMode结构的四个属性决定:   dmPaperSize As Integer   dmPaperLength As Integer   dmPaperWidth As Integer   dmFormName As String * CCHFORMNAME   其中dmFormName用于NT系统中指定打印纸张大小为预定义的某个纸张(Form),但是VB的 Printer对象不支持FormName属性,故只能通过API函数修改DevMode结构的dmFormName属性实现自定义打印。   在Windows NT 或Windows 2000及XP系统上使用特定的纸张大小,则必须为其定义一个页形。VB中的Printer对象具有PageSize、Height和Width属性,对应于DEVMODE的dmPaperSize、dmPaperLength 和dmPaperWidth 成员。但是Printer 对象未提供按名称选择页形的方式,而且也未提供在运行时添加自定义页形的方法,所以必须使用Win32 应用程序编程接口 (API) 来创建自定义页形或按名称选择页形。   在自定义页形时,使用的打印机表单描述结构FORM_INFO_1定义如下:   Type FORM_INFO_1   Flags As Long   pName As Long   Size As SIZEL   ImageableArea As RECT   End Type         SIZEL结构如下:   Public Type SIZEL   cx As Long   cy As Long   End Type   其中cx、cy为实际所要定义的打印纸尺寸。   在自定义页形时,使用Win32应用程序编程接口 (API)如下:   OpenPrinter:打开指定的打印机,并获取打印机的句柄。   DeleteForm:从打印机可用表单列表中删除一个表单。   AddForm:为打印机的表单列表添加一个新表单。   EnumForms:枚举一台打印机可用的表单。   GetPrinter:取得与指定打印机有关的信息。   SetPrinter:对一台打印机的状态进行控制。   CopyMemory:将从源指针所指处开始的长度为Length的内存拷贝到目的指针所指的内存处。      三、打印设计      Printer对象是一个独立于打印机设备的封装,它可以代表不同的打印机,初始时Printer对象为系统缺省的打印机。      (一)分页打印   利用Printer对象开发的打印程序主要靠其提供的NewPage(打印新的一页),CurrentX、CurrentY(置为新页的左上角,可完成多页功能),EndDoc(将打印任务加入打印机队列),KillDoc( 取消打印任务)来控制打印过程。一般情况下,打印程序完成

文档评论(0)

151****1926 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档