VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)
首页 - 经验之谈 - 用 API 打开打印对话框
发表评论(0)作者:, 平台:, 阅读:11863, 日期:2000-03-12
打印机技巧

用 API 打开打印对话框

使用通用对话框控件当然可以打开打印对话框, 不过要浪费更多的资源和增加了一个 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, "一行"