打印机设置的问题!

eduxh 2004-03-31 11:18:16
某些打印机是可以实现无边距打印的,如何用程序进行设置?不用API可以实现吗 ,请高手帮忙!!!诺是API的,希望能给出代码,因为偶刚开始用API。
...全文
86 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
eduxh 2004-04-01
  • 打赏
  • 举报
回复
偶用的是,win2000,这和系统有关吗?
用getprinter和setprinter改怎么写呢?
偶不知道它们的参数都代表什么?
能给我解释一下吗?谢谢
rainstormmaster 2004-04-01
  • 打赏
  • 举报
回复
什么系统?

可以试试用打印机的Scale属性来设置打印页边距:
你可以使用打印机的Scale属性来设置打印页边距。下面的代码设置左边距为1/2英寸。右边距为3/4英寸。乘以1440是将英尺转换成twips。
Printer.ScaleLeft = -0.75 * 1440
Printer.ScaleTop = -0.5 * 1440
Printer.CurrentX = 0
Printer.CurrentY = 0

不过,建议用api函数getprinter和setprinter实现
eduxh 2004-04-01
  • 打赏
  • 举报
回复
谢谢楼上的,可我要得到的是打印机的打印类型,并用程序设置打印类型,怎么写呢??
hxy2003 2004-04-01
  • 打赏
  • 举报
回复
win98与NT打印根本不同的.
fuanwei 2004-03-31
  • 打赏
  • 举报
回复
使用通用对话框控件当然可以打开打印对话框, 不过要浪费更多的资源和增加了一个 OCX 部件。 而用 API 会高效。
声明:
Declare Function PRINTDLG Lib "comdlg32.dll" Alias _
"PrintDlgA" (pPrintdlg As PRINTDLG) As Long
Type PRINTDLG
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
hdc As Long
flags As Long
nFromPage As Integer
nToPage As Integer
nMinPage As Integer
nMaxPage As Integer
nCopies As Integer
hInstance As Long
lCustData As Long
lpfnPrintHook As Long
lpfnSetupHook As Long
lpPrintTemplateName As String
lpSetupTemplateName As String
hPrintTemplate As Long
hSetupTemplate As Long
End Type
使用:
Private Sub Command1_Click()
Dim p As PRINTDLG
p.lStructSize = Len(p)
p.hwndOwner = Me.hWnd
p.nFromPage = 1
p.nToPage = 1
p.nMinPage = 1
p.nMaxPage = 1
p.nCopies = 1
x = PRINTDLG(p)
Printer.Print Text1.Text
End Sub
在打印字符串时自动换行
感谢 shijia 的代码测试。
其中 len1 为打印的宽度, Str 为打印的文本。
Do While Len(Str) > 0
str1 = Str
Do While len1 > 0 And Printer.TextWidth(str1) > len1
str1 = Left(str1, Len(str1) - 1)
Loop
Printer.Print str1 '打印
If Len(str1) = 0 Then Exit Do '不匹配
Str = Mid(Str, Len(Str1)+1) '截断!
Loop
让打印机只打印一行
在 Win95 下,只有在使用 EndDoc 或 NewPage 时,打印机才开始打印,而且每次都要换页。使用以下的方法,可以只打印一行,并且可以把打印机的控制字符也直接发到打印机。
注意:如果打印机无汉字库,不能输出中文。
Open "PRN" For Output As #1
Print #1, "一行"
eduxh 2004-03-31
  • 打赏
  • 举报
回复
谢谢楼上的,可你们给的都不是我想要的啊,我是想知道怎么用程序设置打印机的无边距打印??

高手

分不够可以再加,今天是我第一次在技术区问问题呢,呵呵
  • 打赏
  • 举报
回复
'Example Name:Printer Properties
Private Declare Function OpenPrinter Lib "winspool.drv" Alias "OpenPrinterA" (ByVal pPrinterName As String, phPrinter As Long, pDefault As Any) As Long
Private Declare Function ClosePrinter Lib "winspool.drv" (ByVal hPrinter As Long) As Long
Private Declare Function PrinterProperties Lib "winspool.drv" (ByVal hwnd As Long, ByVal hPrinter As Long) As Long
Private Sub Form_Load()
'KPD-Team 2001
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim hPrinter As Long
OpenPrinter Printer.DeviceName, hPrinter, ByVal 0&
PrinterProperties Me.hwnd, hPrinter
ClosePrinter hPrinter
End Sub
victorycyz 2004-03-31
  • 打赏
  • 举报
回复

如果打印机支持的话,把页边距设置为0 就行了。
eduxh 2004-03-31
  • 打赏
  • 举报
回复
高手………………
eduxh 2004-03-31
  • 打赏
  • 举报
回复
不行啊,楼上的
我用printform打印出来的还是有边距的
该怎么写呢??

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧