手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>VB>列表

VB应用程序中打印条形码的两种方法

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


         Next k

         x = x intWidthXI

       注释: 画宽线

       Else

         For k = 0 To intWidthCU - 1

           Printer.Line (x k, y)-Step(0, intHeight)

         Next k

         x = x intWidthCU

       End If

       注释: 每个字符条码之间为窄间隙

       If j = 5 Then

         x = x intWidthXI * 3

         Exit For

       End If

       注释: 窄间隙

       If Mid(strBarTable(intIndex), j 5, 1) = "0" Then

         x = x intWidthXI * 3

       注释: 宽间隙

       Else

         x = x intWidthCU * 2

       End If

     Next j

   Next i

   注释: 恢复打印机 ScaleMode

   Printer.ScaleMode = intOldScaleMode

   注释: 恢复打印机 DrawWidth

   Printer.DrawWidth = intOldDrawWidth

   注释: 恢复打印机 Font

   Set Printer.Font = fntOldFont

End Sub
   最理想的情况是将它做成一个控件,在控件中提供一个打印方法,该方法实现与上

   那个过程大致相同,只是不能在控件中直接使用VB的Printer对象,否则VB会将你在控件中的打印输出处理为一个单独的页面,而是应该将Printer.hDc传给它,通过调用那些需要指定 HDC 的Windows API函数实现与容器的打印输出在一个页面上,比如我们可以这样定义这个控件的打印方法:

注释: PrintIt 方法将对应的条形码输出到缺省打印机

Public Sub PrintIt(ByVal PrintDC As Long, _

   Optional ByVal intXPos As Integer = 0, _

   Optional ByVal intYPos As Integer = 0, _

   Optional ByVal intPrintHeight As Integer = 10)

   既然不能使用Printer对象,那么画线和输出文字也不能使用Printer对象的Line和Print方法,在我们的程序中至少要申明以下三个Windows API函数:

‘ 移动画笔的位置

Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, lpPoint As POINTAPI) As Long

‘ 从画笔的当前位置到(x,y)画一条线

Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long

‘ 在(x,y)处输出一个字符串

Private 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

‘ MoveToEx() 函数需要的参数

Private Type POINTAPI

   xp As Long

   yp As Long

End Type

Dim papi As POINTAPI

画线操作为(原来的Printer.Line函数):

MoveToEx PrintDC, x k, y, papi

LineTo PrintDC, x k, y intHeight 1

打印字符为(原来的Printer.Print函数):

TextOut PrintDC, x, y intHeight, Mid(strBC, i 1, 1), 1

上一篇: 用VB编程检测当前电池使用情况
下一篇: 用MediaPlayer控件做一个MP3播放器

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!