这段程序编译通过, 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
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
解决方案 »
- 有个C#写的二维码ThoughtWorks.QRCode.dll
- 如何获得桌面指定位置的背景,放到窗体上?
- 得到了父窗口的句饼,怎么获得子窗口的标题、按扭并执行
- 用ado通过odbc连接sqlserver的奇怪问题
- 一个关于取文件名的问题
- 怎样使用MP3PLAY这个控件,做了一个MP3播放器为什么每次开机以后这个控件都不见了?
- !请问如何设置Msflexgrid控件使一列不可见??(在线等待)
- 打印机设置的问题
- Access 数据库转化为Execl,求助!
- 一个关于sql语句的问题。请高手来看看问题出在那里????谢谢了!!!我很急!!!!
- 送给大家一个商业源码
- 请问VB如何实现定时发送指定目录邮件这样的功能?
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
可执行
LineTo Printer.hdc, 120 / Printer.TwipsPerPixelX, 4 / Printer.TwipsPerPixelY改为
MoveToEx Printer.hdc, 0, 0, 0&
LineTo Printer.hdc, 120 , 100
试试
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
这句时提示ByRef参数类型不符
改为
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