📄 modprintcomdlg.bas
字号:
Attribute VB_Name = "modCommonDialog"
Option Explicit
Global g_int_CurrentPrinterIndex As Integer
Public Enum PrinterUnitsConstants
puHundredthsOfMillimeters = PSD_INHUNDREDTHSOFMILLIMETERS
puThousandthsOfInches = PSD_INTHOUSANDTHSOFINCHES
End Enum
Public Type PAGESETUPDLGFLAGS
DefaultMinMargins As Boolean
DisableMargins As Boolean
DisableOrientation As Boolean
DisablePagePainting As Boolean
DisablePaper As Boolean
DisablePrinter As Boolean
EnablePagePaintHook As Boolean
EnablePageSetupHook As Boolean
EnablePageSetupTemplate As Boolean
EnablePageSetupTemplateHandle As Boolean
InHundredthsOfMillimeters As Boolean
InThousandthsOfInches As Boolean
Margins As Boolean
MinMargins As Boolean
NoWarning As Boolean
ReturnDefault As Boolean
ShowHelp As Boolean
End Type
Public Type PRINTDLGFLAGS
AllPages As Boolean
Collate As Boolean
DisablePrintToFile As Boolean
EnablePrintHook As Boolean
EnablePrintTemplate As Boolean
EnablePrintTemplateHandle As Boolean
EnableSetupHook As Boolean
EnableSetupTemplate As Boolean
EnableSetupTemplateHandle As Boolean
HidePrintToFile As Boolean
NoNetworkButton As Boolean
NoPageNums As Boolean
NoSelection As Boolean
NoWarning As Boolean
PageNums As Boolean
PrintSetup As Boolean
PrintToFile As Boolean
ReturnDC As Boolean
ReturnDefault As Boolean
ReturnIC As Boolean
Selection As Boolean
ShowHelp As Boolean
UseDevModeCopies As Boolean
UseDevModeCopiesAndCollate As Boolean
End Type
Public Type DEVMODEFIELDS
InitOrientation As Boolean
InitPaperSize As Boolean
InitPaperLenght As Boolean
InitPaperWidth As Boolean
InitPosition As Boolean 'Windows 98, Windows NT 5.0 and later
InitScale As Boolean
InitCopies As Boolean
InitDefaultSource As Boolean
InitPrintQuality As Boolean
InitColor As Boolean
InitDuplex As Boolean
InitYResolution As Boolean
InitTToption As Boolean
InitCollate As Boolean
InitFormname As Boolean
InitLogPixels As Boolean
InitBitsPerPel As Boolean
InitPelsWidth As Boolean
InitPelsHeight As Boolean
InitDisplayFlags As Boolean
InitDisplayFrequency As Boolean
InitICMMethod As Boolean
InitICMIntent As Boolean
InitMediaType As Boolean
InitDitherType As Boolean
InitPanningWidth As Boolean 'Windows NT 5.0 and later: dmPanningWidth
InitPanningHeight As Boolean 'Windows NT 5.0 and later:
End Type
'By placing these variables here we can retain their data when the user re-visits the dlg
Private ISetDfltPrinter As New cSetDfltPrinter
Private m_lng_DevMode As Long
Private m_lng_DevNames As Long
' PrintDialog wrapper
Public Function vbPrintDlg( _
ByRef hWndOwner As Long, _
ByRef typ_PrintDlg As TPRINTDLG, _
ByRef typ_DevMode As DEVMODE, _
ByRef typ_DevNames As DEVNAMES, _
ByRef typ_PrintDlgFlags As PRINTDLGFLAGS _
) As Boolean
Dim obj_SelPrinter As Printer
Dim str_NewPrinterName As String
Dim hResult As Long
' Fill in TPRINTDLG structure
typ_PrintDlg.lStructSize = Len(typ_PrintDlg)
typ_PrintDlg.hWndOwner = hWndOwner
'Set the Flags
typ_PrintDlg.flags = _
-typ_PrintDlgFlags.Collate * PD_COLLATE Or _
-typ_PrintDlgFlags.DisablePrintToFile * PD_DISABLEPRINTTOFILE Or _
-typ_PrintDlgFlags.EnablePrintHook * PD_ENABLEPRINTHOOK Or _
-typ_PrintDlgFlags.EnablePrintTemplate * PD_ENABLEPRINTTEMPLATE Or _
-typ_PrintDlgFlags.EnablePrintTemplateHandle * PD_ENABLEPRINTTEMPLATEHANDLE Or _
-typ_PrintDlgFlags.EnableSetupHook * PD_ENABLESETUPHOOK Or _
-typ_PrintDlgFlags.EnableSetupTemplate * PD_ENABLESETUPTEMPLATE Or _
-typ_PrintDlgFlags.EnableSetupTemplateHandle * PD_ENABLESETUPTEMPLATEHANDLE Or _
-typ_PrintDlgFlags.HidePrintToFile * PD_HIDEPRINTTOFILE Or _
-typ_PrintDlgFlags.NoNetworkButton * PD_NONETWORKBUTTON Or _
-typ_PrintDlgFlags.NoPageNums * PD_NOPAGENUMS Or _
-typ_PrintDlgFlags.NoSelection * PD_NOSELECTION Or _
-typ_PrintDlgFlags.NoWarning * PD_NOWARNING Or _
-typ_PrintDlgFlags.PrintSetup * PD_PRINTSETUP Or _
-typ_PrintDlgFlags.PrintToFile * PD_PRINTTOFILE Or _
-typ_PrintDlgFlags.ReturnDC * PD_RETURNDC Or _
-typ_PrintDlgFlags.ReturnDefault * PD_RETURNDEFAULT Or _
-typ_PrintDlgFlags.ReturnIC * PD_RETURNIC Or _
-typ_PrintDlgFlags.ShowHelp * PD_SHOWHELP Or _
-typ_PrintDlgFlags.UseDevModeCopies * PD_USEDEVMODECOPIES Or _
-typ_PrintDlgFlags.UseDevModeCopiesAndCollate * PD_USEDEVMODECOPIESANDCOLLATE
If typ_PrintDlgFlags.AllPages Then
typ_PrintDlg.flags = typ_PrintDlg.flags Or PD_ALLPAGES
ElseIf typ_PrintDlgFlags.PageNums Then
typ_PrintDlg.flags = typ_PrintDlg.flags Or PD_PAGENUMS
ElseIf typ_PrintDlgFlags.Selection Then
typ_PrintDlg.flags = typ_PrintDlg.flags Or PD_SELECTION
End If
'Set DEVMODE structure from TPRINTDLG
m_lng_DevMode = GlobalLock(typ_PrintDlg.hDevMode)
If m_lng_DevMode > 0 Then
Call CopyMemory(ByVal m_lng_DevMode, typ_DevMode, Len(typ_DevMode))
hResult = GlobalUnlock(typ_PrintDlg.hDevMode)
End If
'Set DEVNAMES structure from TPRINTDLG
m_lng_DevNames = GlobalLock(typ_PrintDlg.hDevNames)
If m_lng_DevNames > 0 Then
Call CopyMemory(ByVal m_lng_DevNames, typ_DevNames, Len(typ_DevNames))
hResult = GlobalUnlock(typ_PrintDlg.hDevNames)
End If
' Show Print dialog
If PrintDlg(typ_PrintDlg) Then
vbPrintDlg = True
'Call Hourglass(hWndOwner, True)
If Not GetPrinterStructs(typ_PrintDlg.hDevMode, typ_PrintDlg.hDevNames, typ_DevMode, typ_DevNames, True) Then
vbPrintDlg = False
End If
'Call Hourglass(hWndOwner, False)
Else
vbPrintDlg = False
End If
End Function
' PageSetupDlg wrapper
Public Function vbPageSetupDlg( _
ByRef hWndOwner As Long, _
ByRef typ_PrintSetupDlg As TPAGESETUPDLG, _
ByRef typ_DevMode As DEVMODE, _
ByRef typ_DevNames As DEVNAMES, _
ByRef typ_PageSetupDlgFlags As PAGESETUPDLGFLAGS _
) As Boolean
Dim hResult As Long
' Fill in TPRINTDLG structure
typ_PrintSetupDlg.lStructSize = Len(typ_PrintSetupDlg)
typ_PrintSetupDlg.hWndOwner = hWndOwner
'Set the Flags
typ_PrintSetupDlg.flags = _
-typ_PageSetupDlgFlags.DefaultMinMargins * PSD_DEFAULTMINMARGINS Or _
-typ_PageSetupDlgFlags.DisableMargins * PSD_DISABLEMARGINS Or _
-typ_PageSetupDlgFlags.DisableOrientation * PSD_DISABLEORIENTATION Or _
-typ_PageSetupDlgFlags.DisablePagePainting * PSD_DISABLEPAGEPAINTING Or _
-typ_PageSetupDlgFlags.DisablePaper * PSD_DISABLEPAPER Or _
-typ_PageSetupDlgFlags.DisablePrinter * PSD_DISABLEPRINTER Or _
-typ_PageSetupDlgFlags.EnablePagePaintHook * PSD_ENABLEPAGEPAINTHOOK Or _
-typ_PageSetupDlgFlags.EnablePageSetupHook * PSD_ENABLEPAGESETUPHOOK Or _
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -