我想自己制作一个组件,提供打印线条、文本等内容。它提供一个打印方法,通过调用这个打印方法实现打印操作,当然它不控制一个打印页面,页面由调用者来控制,不知道该怎么调用?
我自己利用代码试过几种方法,都不能打印出任何内容。
方法一:调用者将 Printer 对象做为参数送给控件,然后利用送入的 Printer对象的方法 Printer.Line 函数进行打印,没有得到任何结果;
方法二:直接在控件内部利用 Printer.Line 函数进行打印,也没有得到任何结果;
方法三:利用 API 函数进行打印。 LineTo 函数,将 Printer对象的 hDc 句柄做为参数输入,然后利用这个句柄使用 Lineto函数打印线条,但是还是没有得到任何的结果。
请高手帮忙解答,谢谢!

解决方案 »

  1.   

    利用printer对象写了打印代码后,有没有加上printer.enddoc这一句?
      

  2.   

    Leftie(左手,为人民币服务) :
    加上了呀!方法二中,在所有的线条输出之后,调用了 Printer.EndDoc 方法。
    在其它两个方法中,在调用这个打印方法之后,同样调用了 Printer.EndDoc 方法,但是就是什么都没有打印出来。
      

  3.   

    1,检查windows打印机是否正常
    2,在代码中检查printer.height与printer.width及printer.scalemode
      

  4.   

    那是否可以利用将 Printer 对象做为参数送入的方法呢?
    因为打印的页面控制不能在控件中完成,只能为调用者完成。
      

  5.   

    //是否可以利用将 Printer 对象做为参数送入的方法呢?
    当然可以:
    Public Sub PrintDatabase(ByRef objPrint As Object, ByVal strText As String)
        With objPrint
            .ScaleMode = vbMillimeters '以毫米为单位
            .CurrentX = 20
            .CurrentY = 30
            
            objPrint.Print strText
            
            If objPrint Is Printer Then objPrint.EndDoc
        End With
    End SubPrivate Sub Command1_Click()
        PrintDatabase Printer, "Hello,world!"
    End Sub
      

  6.   

    多谢上面的兄弟们,我已经打印出来了,而且页面的控制完全可以在调用者来控制。
    就是利用 Printer 做为对象进行传送过去即可。
    不过开始为什么打印不出来,还没有搞明白。