亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? clsprintdialog.cls

?? 一個調用打印機的VB程序范例
?? CLS
字號:
VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
END
Attribute VB_Name = "clsPrintDialog"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
' =======================================================================
'
' CLASS   : clsPrintDialog
' PURPOSE : Show a dialog to select a printer and to set printer
'           properties. Selected printer will be set to Printer object
'           WITHOUT CHANGING DEFAULT PRINTER.
'           Printer object could print to selected printer then.
'           This class work like "MS Common Dialogs" ShowPrinter method,
'           but it set Printer object without changing default printer.
' HELP    : Look "MS Common Dialogs" OCX help, it applies also to this
'           class. All Flags constants are supported.
' NOTE    : Do you have found any bug or improvement ?
'           Please let me know, that's why I'm sharing source code.
' AUTHOR  : ___________________________________________________
'            Luca Minudel                    software designer
'            Italy Conegliano(TV)
'            voice & fax                     +39 (0)438 412280
'            e-mail                      luca.minudel@nline.it
'            WWW                       (italian language used)
'            http://www.geocities.com/SiliconValley/Vista/4041
'
' =======================================================================
'
' --- API CONSTANTS
'
Private Const CCHDEVICENAME = 32
Private Const CCHFORMNAME = 32
Private Const GMEM_FIXED = &H0
Private Const GMEM_MOVEABLE = &H2
Private Const GMEM_ZEROINIT = &H40
Private Const DM_DUPLEX = &H1000&
Private Const DM_ORIENTATION = &H1&
'
' --- API TYPES DEFINITION
'
Private Type PRINTDLG_TYPE
  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 Type DEVNAMES_TYPE
  wDriverOffset As Integer
  wDeviceOffset As Integer
  wOutputOffset As Integer
  wDefault As Integer
  extra As String * 100
End Type
Private Type DEVMODE_TYPE
  dmDeviceName As String * CCHDEVICENAME
  dmSpecVersion As Integer
  dmDriverVersion As Integer
  dmSize As Integer
  dmDriverExtra As Integer
  dmFields As Long
  dmOrientation As Integer
  dmPaperSize As Integer
  dmPaperLength As Integer
  dmPaperWidth As Integer
  dmScale As Integer
  dmCopies As Integer
  dmDefaultSource As Integer
  dmPrintQuality As Integer
  dmColor As Integer
  dmDuplex As Integer
  dmYResolution As Integer
  dmTTOption As Integer
  dmCollate As Integer
  dmFormName As String * CCHFORMNAME
  dmUnusedPadding As Integer
  dmBitsPerPel As Integer
  dmPelsWidth As Long
  dmPelsHeight As Long
  dmDisplayFlags As Long
  dmDisplayFrequency As Long
End Type
'
' --- API DECLARATIONS
'
Private Declare Function PrintDialog Lib "comdlg32.dll" Alias "PrintDlgA" _
                         (pPrintdlg As PRINTDLG_TYPE) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
                    (hpvDest As Any, _
                     hpvSource As Any, _
                     ByVal cbCopy As Long)
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" _
                         (ByVal hMem As Long) As Long
Private Declare Function GlobalAlloc Lib "kernel32" _
                         (ByVal wFlags As Long, _
                          ByVal dwBytes As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
'
' --- PUBLIC ENUM
'
Public Enum PrinterConstants
  cdlPDAllPages = &H0
  cdlPDCollate = &H10
  cdlPDDisablePrintToFile = &H80000
  cdlPDHelpButton = &H800
  cdlPDHidePrintToFile = &H100000
  cdlPDNoPageNums = &H8
  cdlPDNoSelection = &H4
  cdlPDNoWarning = &H80
  cdlPDPageNums = &H2
  cdlPDPrintSetup = &H40
  cdlPDPrintToFile = &H20
  cdlPDReturnDC = &H100
  cdlPDReturnDefault = &H400
  cdlPDReturnIC = &H200
  cdlPDSelection = &H1
  cdlPDUseDevModeCopies = &H40000
End Enum
Public Enum ErrorConstants
  cdlCancel = 32755
End Enum
'
' --- PRIVATE VARIABLES
'
Private intMinPage As Integer  ' Local copy of Min
Private intMaxPage As Integer  ' Local copy of Max
Private intFromPage As Integer ' Local copy of FromPage
Private intToPage As Integer   ' Local copy of ToPage
' N.B. 0 >= Min >= FromPage >= ToPage >= Max
'      If Max=0 then no limits.
'
' --- PUBLIC VARIABLES
'
Public Flags As PrinterConstants
Public CancelError As Boolean
'
' -- INITIALIZE
'
Private Sub Class_Initialize()
  intMinPage = 0
  intMaxPage = 0
  intFromPage = 0
  intToPage = 0
  CancelError = False
End Sub
'
' -- PUBLIC MEMBERS
'
Property Get Min() As Integer
  Min = intMinPage
End Property
Property Let Min(ByVal intNewValue As Integer)
  intNewValue = IIf(intNewValue > 0, intNewValue, 0)
  intMinPage = intNewValue
  If intNewValue > intFromPage Then _
    intFromPage = intNewValue
  If intNewValue > intToPage Then _
    intToPage = intNewValue
  If intNewValue > intMaxPage Then _
    intMaxPage = intNewValue
End Property
Property Get FromPage() As Integer
  FromPage = intFromPage
End Property
Property Let FromPage(ByVal intNewValue As Integer)
  intNewValue = IIf(intNewValue > 0, intNewValue, 0)
  intFromPage = intNewValue
  If intNewValue > intToPage Then _
    intToPage = intNewValue
  If intNewValue > intMaxPage Then _
    intMaxPage = intNewValue
  If intNewValue < intMinPage Then _
    intMinPage = intNewValue
End Property
Property Get ToPage() As Integer
  ToPage = intToPage
End Property
Property Let ToPage(ByVal intNewValue As Integer)
  intNewValue = IIf(intNewValue > 0, intNewValue, 0)
  intToPage = intNewValue
  If intNewValue > intMaxPage Then _
    intMaxPage = intNewValue
  If intNewValue < intFromPage Then _
    intFromPage = intNewValue
  If intNewValue < intMinPage Then _
    intMinPage = intNewValue
End Property
Property Get Max() As Integer
  Max = intMaxPage
End Property
Property Let Max(ByVal intNewValue As Integer)
  intNewValue = IIf(intNewValue > 0, intNewValue, 0)
  intMaxPage = intNewValue
  If intNewValue < intToPage Then _
    intToPage = intNewValue
  If intNewValue < intFromPage Then _
    intFromPage = intNewValue
  If intNewValue < intMinPage Then _
    intMinPage = intNewValue
End Property
Public Function ShowPrinter() As Boolean
Dim PrintDlg As PRINTDLG_TYPE
Dim DevMode As DEVMODE_TYPE
Dim DevName As DEVNAMES_TYPE
Dim lpDevMode As Long, lpDevName As Long
Dim intReturn As Integer
Dim objPrinter As Printer
Dim strNewPrinterName As String
Dim blnCancel   As Boolean
  blnCancel = False
  ' Use PrintDialog to get the handle to a memory
  ' block with a DevMode and DevName structures
  With PrintDlg
    .lStructSize = Len(PrintDlg)
    .hwndOwner = 0
    .Flags = Flags
    .nMinPage = intMinPage
    .nFromPage = intFromPage
    .nToPage = intToPage
    .nMaxPage = intMaxPage
  End With
  'Set the current orientation and duplex setting
  DevMode.dmDeviceName = Printer.DeviceName
  DevMode.dmSize = Len(DevMode)
  DevMode.dmFields = DM_ORIENTATION Or DM_DUPLEX
  DevMode.dmOrientation = Printer.Orientation
  On Error Resume Next
  DevMode.dmDuplex = Printer.Duplex
  On Error GoTo 0
  'Allocate memory for the initialization hDevMode structure
  'and copy the settings gathered above into this memory
  PrintDlg.hDevMode = GlobalAlloc(GMEM_MOVEABLE Or _
                                  GMEM_ZEROINIT, Len(DevMode))
  lpDevMode = GlobalLock(PrintDlg.hDevMode)
  If lpDevMode > 0 Then
    CopyMemory ByVal lpDevMode, DevMode, Len(DevMode)
    intReturn = GlobalUnlock(lpDevMode)
  End If
  'Set the current driver, device, and port name strings
  With DevName
    .wDriverOffset = 8
    .wDeviceOffset = .wDriverOffset + 1 + Len(Printer.DriverName)
    .wOutputOffset = .wDeviceOffset + 1 + Len(Printer.Port)
    .wDefault = 0
  End With
  With Printer
    DevName.extra = .DriverName & Chr(0) & _
                    .DeviceName & Chr(0) & .Port & Chr(0)
  End With
  'Allocate memory for the initial hDevName structure
  'and copy the settings gathered above into this memory
  PrintDlg.hDevNames = GlobalAlloc(GMEM_MOVEABLE Or _
                                   GMEM_ZEROINIT, Len(DevName))
  lpDevName = GlobalLock(PrintDlg.hDevNames)
  If lpDevName > 0 Then
    CopyMemory ByVal lpDevName, DevName, Len(DevName)
    intReturn = GlobalUnlock(lpDevName)
  End If
  'Call the print dialog up and let the user make changes
  If PrintDialog(PrintDlg) Then
    'First get the DevName structure.
    lpDevName = GlobalLock(PrintDlg.hDevNames)
    CopyMemory DevName, ByVal lpDevName, 45
    intReturn = GlobalUnlock(lpDevName)
    With PrintDlg
      Flags = .Flags
      intFromPage = .nFromPage
      intToPage = .nToPage
    End With
     GlobalFree PrintDlg.hDevNames
    'Next get the DevMode structure and set the printer
    'properties appropriately
    lpDevMode = GlobalLock(PrintDlg.hDevMode)
    CopyMemory DevMode, ByVal lpDevMode, Len(DevMode)
    intReturn = GlobalUnlock(PrintDlg.hDevMode)
    GlobalFree PrintDlg.hDevMode
    strNewPrinterName = UCase$(left(DevMode.dmDeviceName, _
                        InStr(DevMode.dmDeviceName, Chr$(0)) - 1))
    If Printer.DeviceName <> strNewPrinterName Then
      For Each objPrinter In Printers
        If UCase$(objPrinter.DeviceName) = strNewPrinterName Then _
          Set Printer = objPrinter
      Next
    End If
    On Error Resume Next
    'Set printer object properties according to selections made
    'by user
    With Printer
      .Copies = DevMode.dmCopies
      .Duplex = DevMode.dmDuplex
      .Orientation = DevMode.dmOrientation
    End With
    On Error GoTo 0
  Else
    GlobalFree PrintDlg.hDevMode
    GlobalFree PrintDlg.hDevNames
    blnCancel = True
    If CancelError Then _
      Err.Raise cdlCancel, "LM PrintDialog", "Cancel."
  End If
  ShowPrinter = Not blnCancel
End Function


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜免费福利视频| 国产自产高清不卡| 国产亚洲欧美激情| 欧美一区二区美女| 日本久久精品电影| 成人精品高清在线| 国产成人av电影在线| 国产精品18久久久| 国产麻豆精品在线| 国产1区2区3区精品美女| 精品视频一区三区九区| 欧美乱妇15p| 日韩欧美国产不卡| 久久这里只有精品首页| 久久精品亚洲精品国产欧美| 丝袜美腿高跟呻吟高潮一区| 免费亚洲电影在线| 国产高清亚洲一区| 日韩视频一区二区在线观看| 精品粉嫩超白一线天av| 亚洲欧美在线观看| 亚洲一区二区美女| 久久精品国产亚洲5555| 国产一区二区三区不卡在线观看| 7777精品伊人久久久大香线蕉的| 久久久不卡影院| 一个色综合网站| 日本美女视频一区二区| 国产美女精品人人做人人爽| 日韩欧美国产电影| 久久69国产一区二区蜜臀| 91蝌蚪porny| 精品久久国产老人久久综合| 国产精品超碰97尤物18| 老司机精品视频在线| 欧美一区二区三区成人| 久久精品av麻豆的观看方式| 精品久久久久久久久久久久久久久| 日韩精品国产欧美| 欧美成人一区二区三区在线观看 | 一本色道久久综合亚洲91| 欧美老肥妇做.爰bbww视频| 夜夜夜精品看看| 欧美日韩精品系列| 国产精品久久毛片av大全日韩| 大胆欧美人体老妇| 91精品国产色综合久久久蜜香臀| 日韩中文字幕一区二区三区| 欧美电影免费观看高清完整版| 国产一区二区三区视频在线播放| 国产视频一区在线观看| 99久久er热在这里只有精品66| 欧美不卡一区二区三区四区| 国产一区二区调教| 国产精品传媒入口麻豆| 91久久国产综合久久| 日韩精品1区2区3区| 久久免费视频色| 99精品热视频| 蜜桃av一区二区三区电影| 欧美亚男人的天堂| 一区二区三区丝袜| 日韩女优电影在线观看| 国产91丝袜在线观看| 亚洲一区二区在线播放相泽| 精品少妇一区二区三区| 成人av在线网站| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产三级精品视频| 国产成人夜色高潮福利影视| 亚洲精品成人悠悠色影视| 97久久超碰国产精品电影| 日韩精品高清不卡| 中文字幕一区二区三区在线播放| 欧美日韩免费在线视频| 丁香五精品蜜臀久久久久99网站| 亚洲国产成人精品视频| 国产午夜精品美女毛片视频| 欧美日韩视频一区二区| 成人国产精品免费观看动漫| 日韩av电影天堂| 中文字幕一区二区三区色视频| 91精品在线观看入口| 色呦呦网站一区| 国产在线精品一区在线观看麻豆| 亚洲尤物视频在线| 亚洲欧洲日韩av| 久久久国产一区二区三区四区小说 | 一区二区三区四区在线免费观看| 精品美女在线观看| 欧美在线免费播放| 蜜臀av在线播放一区二区三区 | 久久亚洲精华国产精华液| 欧美日韩精品一区二区三区四区| 成人激情电影免费在线观看| 美女视频网站久久| 日韩电影一区二区三区四区| 亚洲精品日韩一| 亚洲欧美色图小说| 欧美久久一二区| 日本乱人伦一区| 日本精品一区二区三区高清 | 精品亚洲porn| 青青国产91久久久久久| 午夜av电影一区| 久久精品视频一区| 久久嫩草精品久久久精品一| 精品久久久久久久人人人人传媒| 日韩一区国产二区欧美三区| 精品视频一区 二区 三区| 欧美调教femdomvk| 欧美三级韩国三级日本一级| 色欧美片视频在线观看在线视频| av激情综合网| 美女视频网站黄色亚洲| 日本不卡视频在线| 久久精品国产精品青草| 久久精品99国产精品| 久久福利视频一区二区| 国产麻豆视频精品| 大桥未久av一区二区三区中文| 成人黄色小视频在线观看| 成人午夜精品在线| 色婷婷一区二区三区四区| 91福利社在线观看| 91精品一区二区三区久久久久久| 欧美一区二区三区喷汁尤物| 日韩欧美区一区二| 久久久久9999亚洲精品| 国产精品免费久久久久| 日韩一级免费一区| 久久亚洲一区二区三区明星换脸| 久久久99久久| 亚洲欧美激情小说另类| 水蜜桃久久夜色精品一区的特点| 日本成人超碰在线观看| 国产成人一区二区精品非洲| 91免费看`日韩一区二区| 欧美三级视频在线播放| 欧美成人精品1314www| 国产精品欧美精品| 亚洲影院久久精品| 国内欧美视频一区二区 | 美女在线观看视频一区二区| 国产一区二区三区日韩| 色综合天天综合给合国产| 国产精品中文欧美| 国产一区二区久久| 色欧美88888久久久久久影院| 91精品国产乱码久久蜜臀| 国产欧美一区视频| 视频在线观看一区二区三区| 国产.欧美.日韩| 欧美精品自拍偷拍动漫精品| 国产色一区二区| 午夜影院久久久| 亚洲成va人在线观看| 激情欧美一区二区三区在线观看| 91原创在线视频| 欧美v亚洲v综合ⅴ国产v| 国产精品乱人伦| 欧美a一区二区| 色一情一乱一乱一91av| 欧美电影免费提供在线观看| 亚洲精品国产视频| 国产一区不卡在线| 欧美在线观看一区| 一区在线中文字幕| 久久国产剧场电影| 精品视频一区 二区 三区| 中文字幕一区在线观看| 久久精品72免费观看| 欧美视频一区在线观看| 国产精品三级久久久久三级| 免费成人在线视频观看| 欧美日韩免费一区二区三区| 国产精品不卡一区| 狠狠v欧美v日韩v亚洲ⅴ| 8x8x8国产精品| 亚洲一区二区成人在线观看| av不卡一区二区三区| 久久精品欧美一区二区三区不卡| 免费在线观看成人| 欧美日韩一二区| 亚洲一区二区三区四区在线| 91丝袜美女网| 自拍偷自拍亚洲精品播放| 午夜国产精品影院在线观看| 色综合中文字幕国产 | 日韩精品91亚洲二区在线观看| 91色porny在线视频| 欧美高清在线精品一区| 亚洲欧洲综合另类| 99久久久精品| 欧美韩国一区二区| 成人91在线观看| 中文字幕一区在线| 色综合久久久网| 亚洲精品欧美二区三区中文字幕| 91麻豆免费在线观看|