home *** CD-ROM | disk | FTP | other *** search
/ PC World 2001 April / PCWorld_2001-04_cd.bin / Software / Topware / fprint / fpdk400.exe / samples / vb6 / FPdemo.frm < prev    next >
Text File  |  2000-07-18  |  11KB  |  390 lines

  1. VERSION 5.00
  2. Begin VB.Form FPdemo 
  3.    Caption         =   "FinePrint API Sample Application"
  4.    ClientHeight    =   3090
  5.    ClientLeft      =   45
  6.    ClientTop       =   345
  7.    ClientWidth     =   5865
  8.    Icon            =   "FPdemo.frx":0000
  9.    LinkTopic       =   "Form1"
  10.    ScaleHeight     =   3090
  11.    ScaleWidth      =   5865
  12.    StartUpPosition =   2  'CenterScreen
  13.    Begin VB.CommandButton btnExit 
  14.       Cancel          =   -1  'True
  15.       Caption         =   "Exit"
  16.       Height          =   400
  17.       Left            =   3600
  18.       TabIndex        =   6
  19.       Top             =   2520
  20.       Width           =   2052
  21.    End
  22.    Begin VB.CommandButton Command1 
  23.       Caption         =   "Set as default"
  24.       Height          =   400
  25.       Left            =   480
  26.       TabIndex        =   4
  27.       Top             =   2520
  28.       Width           =   2052
  29.    End
  30.    Begin VB.ListBox List1 
  31.       Height          =   2010
  32.       Left            =   120
  33.       Sorted          =   -1  'True
  34.       TabIndex        =   3
  35.       Top             =   360
  36.       Width           =   3255
  37.    End
  38.    Begin VB.CommandButton btnPrint 
  39.       Caption         =   "Print FPDK.DOC"
  40.       Height          =   400
  41.       Left            =   3600
  42.       TabIndex        =   2
  43.       Top             =   1320
  44.       Width           =   2052
  45.    End
  46.    Begin VB.CommandButton btnAttr 
  47.       Caption         =   "Show FP layout attributes"
  48.       Height          =   400
  49.       Left            =   3600
  50.       TabIndex        =   1
  51.       Top             =   840
  52.       Width           =   2052
  53.    End
  54.    Begin VB.CommandButton btnOpenDialog 
  55.       Caption         =   "Show FP dialog"
  56.       Height          =   400
  57.       Left            =   3600
  58.       TabIndex        =   0
  59.       Top             =   360
  60.       Width           =   2052
  61.    End
  62.    Begin VB.Label Label1 
  63.       AutoSize        =   -1  'True
  64.       Caption         =   "Printers:"
  65.       Height          =   195
  66.       Left            =   120
  67.       TabIndex        =   5
  68.       Top             =   120
  69.       Width           =   570
  70.    End
  71. End
  72. Attribute VB_Name = "FPdemo"
  73. Attribute VB_GlobalNameSpace = False
  74. Attribute VB_Creatable = False
  75. Attribute VB_PredeclaredId = True
  76. Attribute VB_Exposed = False
  77. Option Explicit
  78.  
  79. Dim StartupPrinter As String
  80.       
  81.       Private Sub GetDriverAndPort(ByVal Buffer As String, DriverName As _
  82.           String, PrinterPort As String)
  83.  
  84.           Dim iDriver As Integer
  85.           Dim iPort As Integer
  86.           DriverName = ""
  87.           PrinterPort = ""
  88.  
  89.           'The driver name is first in the string terminated by a comma
  90.           iDriver = InStr(Buffer, ",")
  91.           If iDriver > 0 Then
  92.  
  93.               'Strip out the driver name
  94.               DriverName = Left(Buffer, iDriver - 1)
  95.  
  96.               'The port name is the second entry after the driver name
  97.               'separated by commas.
  98.               iPort = InStr(iDriver + 1, Buffer, ",")
  99.  
  100.               If iPort > 0 Then
  101.                   'Strip out the port name
  102.                   PrinterPort = Mid(Buffer, iDriver + 1, _
  103.                   iPort - iDriver - 1)
  104.               End If
  105.           End If
  106.       End Sub
  107.       
  108.       Private Sub ParseList(lstCtl As Control, ByVal Buffer As String)
  109.           Dim i As Integer
  110.  
  111.           Dim s As String
  112.  
  113.           Do
  114.               i = InStr(Buffer, Chr(0))
  115.               If i > 0 Then
  116.                   s = Left(Buffer, i - 1)
  117.                   If Len(Trim(s)) Then lstCtl.AddItem s
  118.                   Buffer = Mid(Buffer, i + 1)
  119.                   If Trim(s) = Printer.DeviceName Then lstCtl.Text = Trim(s)
  120.               Else
  121.                   If Len(Trim(Buffer)) Then lstCtl.AddItem Buffer
  122.                   Buffer = ""
  123.               End If
  124.           Loop While i > 0
  125.       End Sub
  126.  
  127.       Private Sub SetDefaultPrinter()
  128.           
  129.           Dim Buffer As String
  130.           Dim DeviceName As String
  131.           Dim DriverName As String
  132.           Dim PrinterPort As String
  133.           Dim PrinterName As String
  134.           Dim DeviceLine As String
  135.           Dim r As Long
  136.           
  137.           If List1.ListIndex > -1 Then
  138.               'Get the printer information for the currently selected
  139.               'printer in the list. The information is taken from the
  140.               'WIN.INI file.
  141.               Buffer = Space(1024)
  142.               PrinterName = List1.Text
  143.               r = GetProfileString("PrinterPorts", PrinterName, "", _
  144.                   Buffer, Len(Buffer))
  145.  
  146.               'Parse the driver name and port name out of the buffer
  147.               GetDriverAndPort Buffer, DriverName, PrinterPort
  148.  
  149.               If DriverName <> "" And PrinterPort <> "" Then
  150.                 DeviceLine = List1.Text & "," & DriverName & "," & PrinterPort
  151.                 
  152.                 ' Store the new printer information in the [WINDOWS] section of
  153.                 ' the WIN.INI file for the DEVICE= item
  154.                 r = WriteProfileString("windows", "Device", DeviceLine)
  155.                 
  156.                 ' Cause all applications to reload the INI file:
  157.                 r = SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, ByVal "windows")
  158.               End If
  159.           End If
  160.       End Sub
  161.       
  162. Private Sub btnExit_Click()
  163.  
  164.     Unload Me
  165.     End
  166.     
  167. End Sub
  168.  
  169. Private Sub Command1_Click()
  170.  
  171.     Call SetDefaultPrinter
  172.     
  173. End Sub
  174.  
  175. Private Sub Form_Load()
  176.         
  177.     Dim r As Long
  178.     Dim Buffer As String
  179.     
  180.     'Get the list of available printers from WIN.INI
  181.     Buffer = Space(8192)
  182.     r = GetProfileString("PrinterPorts", vbNullString, "", _
  183.        Buffer, Len(Buffer))
  184.     
  185.     'Display the list of printer in the list box List1
  186.     ParseList List1, Buffer
  187.  
  188.     StartupPrinter = List1.Text
  189.     
  190. End Sub
  191.  
  192. Private Sub btnAttr_Click()
  193.  
  194.     FPattributes.Show 1, Me
  195.     
  196. End Sub
  197.  
  198. Private Sub btnOpenDialog_Click()
  199.  
  200.     Dim result As Long
  201.     Dim szFinePrinter As String
  202.     Dim hfp As Long
  203.     Dim dwDlg As Long
  204.     
  205.     szFinePrinter = "FinePrint Driver"
  206.     
  207.     result = fpOpen(szFinePrinter, hfp)
  208.     If result <> 0 Then
  209.         MsgBox "FinePrint Error: " & ErrorText(result)
  210.         Exit Sub
  211.     End If
  212.  
  213.     result = fpDisplayDialog(hfp, dwDlg)
  214.     Select Case dwDlg
  215.         Case IDOK
  216.             MsgBox "User pressed 'OK'"
  217.         Case IDCANCEL
  218.             MsgBox "User pressed 'Cancel'"
  219.         Case IDDEFER
  220.             MsgBox "User pressed 'Defer'"
  221.         Case IDDEFERALL
  222.             MsgBox "User pressed 'Defer all'"
  223.         Case Else
  224.             MsgBox "User pressed button value " & dwDlg
  225.     End Select
  226.     
  227.     result = FpClose(hfp, False)
  228.     
  229. End Sub
  230.  
  231.  
  232. Private Sub btnPrint_Click()
  233.  
  234.     Dim result As Long
  235.     Dim fpe As Long
  236.     Dim szFinePrinter As String
  237.     Dim hfp As Long
  238.     Dim dwDlg As Long
  239.     Dim intAttr As Integer
  240.     Dim lngAttr As Long
  241.     Dim bAttr As Boolean
  242.     Dim strAttr As String
  243.     Dim lenAttr As Long
  244.     Dim szStat As String
  245.     Dim phStat As Long
  246.     Dim szWatermark As String
  247.     Dim pLogFont As LOGFONT
  248.     Dim oldPrinter As Printer
  249.     Dim P As Printer
  250.     Dim jcOrig As FpJobCount
  251.     Dim lpShellExecuteInfo As SHELLEXECUTEINFO
  252.     Dim hwnd As Long
  253.     Dim lpOperation As String
  254.     Dim lpFile As String
  255.     Dim lpParameters As String
  256.     Dim lpDirectory As String
  257.     Dim nShowCmd As Long
  258.     Dim hProcess As Long
  259.     Dim cSecTimeoutStart As Long
  260.     Dim cSecTimeoutPrint As Long
  261.     Dim pjs As FpJobStatus
  262.     
  263.     szFinePrinter = vbNullString
  264.     
  265.     fpe = fpOpen(szFinePrinter, hfp)
  266.     If fpe <> 0 Then
  267.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  268.         Exit Sub
  269.     End If
  270.  
  271.     'select the N-up, borders, and margins settings
  272.     lngAttr = eLayout4
  273.     fpe = fpSetLayoutAttr(hfp, eliLayout, ByVal lngAttr)
  274.     If fpe <> 0 Then
  275.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  276.         GoTo FpClose
  277.     End If
  278.     
  279.     lngAttr = eBordersOn
  280.     fpe = fpSetLayoutAttr(hfp, eliBorders, ByVal lngAttr)
  281.     If fpe <> 0 Then
  282.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  283.         GoTo FpClose
  284.     End If
  285.     
  286.     lngAttr = eMarginMedium
  287.     fpe = fpSetLayoutAttr(hfp, eliMargins, ByVal lngAttr)
  288.     If fpe <> 0 Then
  289.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  290.         GoTo FpClose
  291.     End If
  292.  
  293.     szStat = "VB6 stationery"
  294.     fpe = fpCreateStationery(hfp, szStat, phStat)
  295.     If fpe <> 0 Then
  296.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  297.         GoTo FpClose
  298.     End If
  299.     
  300.     szWatermark = "VB6 watermark"
  301.     fpe = fpSetStationeryAttr(hfp, phStat, esiWatermark, esiaText, ByVal szWatermark)
  302.     If fpe <> 0 Then
  303.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  304.         GoTo FpClose
  305.     End If
  306.     
  307.     lenAttr = Len(pLogFont)
  308.     fpe = fpGetStationeryAttr(hfp, phStat, esiWatermark, esiaFont, pLogFont, lenAttr)
  309.     'szFontname = Left(StrConv(pLogFont.lfFaceName, vbFromUnicode), InStr(StrConv(pLogFont.lfFaceName, vbFromUnicode), Chr$(0)) - 1)
  310.     
  311.     'pLogFont.lfFaceName = StrConv("Times New Roman", vbUnicode) & Chr$(0)
  312.     pLogFont.lfFaceName = "Times New Roman" & Chr$(0)
  313.     
  314.     If fpe <> 0 Then
  315.         fpe = fpSetStationeryAttr(hfp, phStat, esiWatermark, esiaFont, pLogFont)
  316.         If fpe <> 0 Then
  317.             MsgBox "FinePrint Error: " & ErrorText(fpe)
  318.             GoTo FpClose
  319.         End If
  320.     End If
  321.     
  322.     lngAttr = RGB(0, 0, 255)
  323.     fpe = fpSetStationeryAttr(hfp, phStat, esiWatermark, esiaColor, ByVal lngAttr)
  324.     If fpe <> 0 Then
  325.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  326.         GoTo FpClose
  327.     End If
  328.  
  329.     fpe = fpCloseStationery(hfp, phStat)
  330.     If fpe <> 0 Then
  331.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  332.         GoTo FpClose
  333.     End If
  334.     
  335.     fpe = fpSetLayoutAttr(hfp, eliStationery, ByVal szStat)
  336.     If fpe <> 0 Then
  337.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  338.         GoTo FpClose
  339.     End If
  340.     
  341.     fpe = fpGetJobCount(hfp, jcOrig)
  342.     If fpe <> 0 Then
  343.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  344.         GoTo FpClose
  345.     End If
  346.     
  347.     lpShellExecuteInfo.cbSize = Len(lpShellExecuteInfo)
  348.     lpShellExecuteInfo.hwnd = Me.hwnd
  349.     lpShellExecuteInfo.lpVerb = "print"
  350.     lpShellExecuteInfo.lpFile = "c:\fpdk4\doc\fpdk.doc"
  351.     lpShellExecuteInfo.nShow = SW_SHOWNORMAL
  352.     lpShellExecuteInfo.fMask = SEE_MASK_NOCLOSEPROCESS
  353.     
  354.     result = ShellExecuteEx(lpShellExecuteInfo)
  355.     
  356.     cSecTimeoutStart = 60
  357.     cSecTimeoutPrint = 600
  358.     fpe = fpWaitForJob(hfp, jcOrig, lpShellExecuteInfo.hProcess, cSecTimeoutStart, cSecTimeoutPrint, pjs)
  359.     
  360.     If lpShellExecuteInfo.hProcess <> 0 Then
  361.         result = CloseHandle(lpShellExecuteInfo.hProcess)
  362.     End If
  363.     If fpe <> 0 Then
  364.         MsgBox "FinePrint Error: " & ErrorText(fpe)
  365.         GoTo FpClose
  366.     End If
  367.     
  368. '    fpe = fpDisplayDialog(hfp, dwDlg)
  369. '    If dwDlg <> IDCANCEL Then
  370. '        fpe = fpPrintAllJobs(hfp, vbNullString, True, True)
  371. '    End If
  372.     
  373.     MsgBox "All tests completed successfully!"
  374.     
  375. FpClose:
  376.  
  377.     fpe = FpClose(hfp, True)
  378.  
  379. End Sub
  380.  
  381. Private Sub Form_Unload(Cancel As Integer)
  382.  
  383.     If List1.Text <> StartupPrinter Then
  384.         List1.Text = StartupPrinter
  385.         Call SetDefaultPrinter
  386.     End If
  387.     
  388. End Sub
  389.  
  390.