linto,textout并未打印出内容,为何?
这段程序编译通过, WritePrinter语句已执行,打印出字符,但linto,textout并未打印出内容,为何?Public Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Declare Function EndDocPrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Declare Function EndPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, ByVal pDefault As Long) As Long
Public Declare Function StartDocPrinter Lib "winspool.drv" Alias "StartDocPrinterA" (ByVal hPrinter As Long, ByVal Level As Long, pDocInfo As DOCINFO) As Long
Public Declare Function StartPagePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Public Declare Function WritePrinter Lib "winspool.drv" (ByVal hPrinter As Long, pBuf As Any, ByVal cdBuf As Long, pcWritten As Long) As Long
Public Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As Long) As Long
Public Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
Private Sub Command1_Click()
Dim lhPrinter As Long
Dim lReturn As Long
Dim i, j As Long
Dim lpcWritten As Long
Dim lDoc As Long
Dim sWrittenData As String
Dim MyDocInfo As DOCINFO
Dim pt As POINTAPI
Dim OutString As String
lReturn = OpenPrinter(Printer.DeviceName, lhPrinter, 0)
If lReturn = 0 Then
MsgBox "The Printer Name you typed wasn't recognized."
Exit Sub
End If
MyDocInfo.pDocName = "AAAAAA"
MyDocInfo.pOutputFile = vbNullString
MyDocInfo.pDatatype = vbNullString
lDoc = StartDocPrinter(lhPrinter, 1, MyDocInfo)
Call StartPagePrinter(lhPrinter)
Printer.ScaleMode = 3
sWrittenData = "How's that for Magic !!!!"
lReturn = WritePrinter(lhPrinter, ByVal sWrittenData, Len(sWrittenData), lpcWritten)
OutString = "TEST LINE !!!!!!"
i = LenB(StrConv(OutString, 1))
TextOut lhPrinter, 10, 10, OutString, i
MoveToEx lhPrinter, 10 / Printer.TwipsPerPixelX, 1 / Printer.TwipsPerPixelY, 0&
LineTo lhPrinter, 120 / Printer.TwipsPerPixelX, 4 / Printer.TwipsPerPixelY
lReturn = EndPagePrinter(lhPrinter)
lReturn = EndDocPrinter(lhPrinter)
lReturn = ClosePrinter(lhPrinter)
End Sub
--------------------编程问答--------------------
TextOut lhPrinter, 10, 10, OutString, i--------------------编程问答-------------------- TextOut lhPrinter, 10, 10, OutString, i
MoveToEx lhPrinter, 10 / Printer.TwipsPerPixelX, 1 / Printer.TwipsPerPixelY, 0&
LineTo lhPrinter, 120 / Printer.TwipsPerPixelX, 4 / Printer.TwipsPerPixelY
TextOut Printer.hdc, 10, 10, OutString, i
MoveToEx Printer.hdc, 10 / Printer.TwipsPerPixelX, 1 / Printer.TwipsPerPixelY, 0&
LineTo Printer.hdc, 120 / Printer.TwipsPerPixelX, 4 / Printer.TwipsPerPixelY
MoveToEx lhPrinter, 10 / Printer.TwipsPerPixelX, 1 / Printer.TwipsPerPixelY, 0&
LineTo lhPrinter, 120 / Printer.TwipsPerPixelX, 4 / Printer.TwipsPerPixelY
TextOut Printer.hdc, 10, 10, OutString, i
MoveToEx Printer.hdc, 10 / Printer.TwipsPerPixelX, 1 / Printer.TwipsPerPixelY, 0&
LineTo Printer.hdc, 120 / Printer.TwipsPerPixelX, 4 / Printer.TwipsPerPixelY --------------------编程问答-------------------- lhPrinter 改成 Printer.hdc仍不行 --------------------编程问答-------------------- 但是 WritePrinter(lhPrinter, ByVal sWrittenData, Len(sWrittenData), lpcWritten)
可执行 --------------------编程问答-------------------- MoveToEx Printer.hdc, 10 / Printer.TwipsPerPixelX, 1 / Printer.TwipsPerPixelY, 0&
LineTo Printer.hdc, 120 / Printer.TwipsPerPixelX, 4 / Printer.TwipsPerPixelY
改为
MoveToEx Printer.hdc, 0, 0, 0&
LineTo Printer.hdc, 120 , 100
试试 --------------------编程问答-------------------- 可执行与执行成功是两回事
话要说明白
--------------------编程问答-------------------- MoveToEx Printer.hdc, 10 / Printer.TwipsPerPixelX, 1 / Printer.TwipsPerPixelY, 0&
LineTo Printer.hdc, 120 / Printer.TwipsPerPixelX, 4 / Printer.TwipsPerPixelY
改为
MoveToEx Printer.hdc, 0, 0, 0&
LineTo Printer.hdc, 120 , 100
仍然不打印!!!
但是 WritePrinter(lhPrinter, ByVal sWrittenData, Len(sWrittenData), lpcWritten)
可以打印出字符 --------------------编程问答--------------------
改为
pt.x=0
pt.y=0
MoveToEx Printer.hdc, 0, 0, pt
LineTo Printer.hdc, 120 , 100 --------------------编程问答-------------------- MoveToEx Printer.hdc, 0, 0, pt
这句时提示ByRef参数类型不符 --------------------编程问答-------------------- Public Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As Long) As Long
改为
Public Declare Function MoveToEx Lib "gdi32" Alias "MoveToEx" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long
--------------------编程问答-------------------- 改后可以运行,但仍不打印,我在微软论坛上看到一个帖子,讲调用lineto函数将图形画在内存中。然后将内存中的数据发送到打印机打印。如何编呢? --------------------编程问答-------------------- 在哪里能找到相关资料??? --------------------编程问答-------------------- .EndDoc'之后才实际打印的说。 --------------------编程问答-------------------- EndDoc是分页打印,我编的是地震仪绘图程序,收到一个点,打印机就立即打出这点到前一点的曲线
补充:VB , API