当前位置:编程学习 > VB >>

VB如果用print对象实现暂停打印功能

调用print做了一个发票打印的程序,希望可以在打印的时候有一个按钮点击,使打印暂停,再次点击则恢复打印,需要如何实现? 用API(SetPrinter)!!!!   
    
  SetPrinter     
    
  VB声明     
  Declare   Function   SetPrinter   Lib   "winspool.drv"   Alias   "SetPrinterA"   (ByVal   hPrinter   As   Long,   ByVal   Level   As   Long,   pPrinter   As   Byte,   ByVal   Command   As   Long)   As   Long     
  说明     
  对一台打印机的状态进行控制     
  返回值     
  Long,非零表示成功,零表示失败。会设置GetLastError     
  参数表     
  参数   类型及说明     
  hPrinter   Long,指定一个已打开的打印机的句柄(用OpenPrinter取得)     
  Level   Long,0,2或3(4或5用于windows95,5或6用于NT   4.0)。如Command不是零,则这个参数必须是零     
  pPrinter   Byte,包含一个PRINTER_INFO_x的结构的缓冲区,其中的x代表级别的设定(Level)。假如级别为零,并且Command设为PRINTER_CONTROL_SET_STATUS,那缓冲区就包含了一个PRINTER_CONTROL_STATUS结构。否则,如级别为零,就设为NULL(要把声明变成ByVal   As   Long,以便传递零值)     
  Command   Long,下述值之一:                                           
  零   根据PRINTER_INFO_x结构改变打印机     
  PRINTER_CONTROL_PAUSE   暂停打印机     
  PRINTER_CONTROL_PURGE   删除打印机的所有作业     
  PRINTER_CONTROL_RESUME   恢复一台暂停的打印机     
  PRINTER_CONTROL_SET_STATUS     载入打印机的PRINTER_CONTROL_STATUS结构(不可在NT   3.51下使用)     
  注解     
  在PRINTER_INFO_2结构的基础上设置打印机状态时,pServerName,AveragePPM,Status和cJobs字段都会被忽略   
      
ls能给个例子么?setprinter能够跟printer对象混用吗? 我想不能用printer,printer应该做不到这个,应该用api
可是我用printer对象写了绝大部分代码了啊,难道要重新用setprinter搞过= = 值得学习!!! 好象printer与SetPrinter没有必要同时用吧?printer是将数据发到打印机,而setprinter控制打印机的当前状态?
引用 4 楼 lafeal 的回复:
可是我用printer对象写了绝大部分代码了啊,难道要重新用setprinter搞过= =


两个一起使用
打印用printer
打印暂停用api 给楼主推荐个控件吧
Grid++Report 5.0++
很简单好用功能强大
即打即停,在模板文件可以设置,在程序行也可以
如果你已经装了GRID5.0++在暂停按钮下写如下代码就可以了
程序行的代码是
Report.ContinuePrint = True
report为GRID REPORT对象
Option Explicit

Private m_bPause As Boolean

Private Sub Command1_Click()
    Command2.Enabled = True
    Command1.Enabled = False
    
    m_bPause = False
    For i = 1 To TicksCount
        Call PrintTicks(i)  '打印一张帐票'
        
        Do
            DoEvents
        Loop While m_bPause
    Next
    
    Command1.Enabled = True
    Command2.Enabled = False
End Sub

Private Sub Command2_Click()
    m_bPause = Not m_bPause
    Command2.Caption = IIf(m_bPause, "继续", "暂停")
End Sub

Private Sub Form_Load()
    Command1.Caption = "打印"
    Command2.Caption = "暂停"
    Command2.Enabled = False
End Sub
要想用printer即打即停,只能是天方夜谭 9楼 你是s   b   吗???????
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,