Skip to content

通用对话框控件(CommonDialog)

提供 Windows 标准对话框(打开、保存、颜色、字体、打印、帮助、页面设置、文件夹浏览、查找、替换)的封装类。

枚举

CdlErrorConstants

常量说明
CdlCancel32755用户选择了"取消"
CdlBufferTooSmall20476文件名缓冲区太小
CdlInvalidFileName20477文件名无效
CdlSubclassFailure20478子类化失败
CdlMaxLessThanMin24573最小值大于最大值
CdlNoFonts24574没有可用字体
CdlPrinterNotFound28660未找到打印机
CdlCreateICFailure28661创建信息上下文失败
CdlDndmMismatch28662DEVMODE 不匹配
CdlNoDefaultPrn28663没有默认打印机
CdlNoDevices28664没有打印设备
CdlInitFailure28665打印对话框初始化失败
CdlGetDevModeFail28666获取 DEVMODE 失败
CdlLoadDrvFailure28667加载打印机驱动失败
CdlRetDefFailure28668返回默认 DEVMODE 失败
CdlParseFailure28669解析失败
CdlHelp32751帮助请求
CdlBufferLengthZero36848缓冲区长度为零

CdlPRORConstants

常量说明
CdlPRORPortraitvbPRORPortrait纵向
CdlPRORLandscapevbPRORLandscape横向

CdlPRPSConstants

常量说明
CdlPRPSLettervbPRPSLetterLetter
CdlPRPSLetterSmallvbPRPSLetterSmallLetter Small
CdlPRPSTabloidvbPRPSTabloidTabloid
CdlPRPSLedgervbPRPSLedgerLedger
CdlPRPSLegalvbPRPSLegalLegal
CdlPRPSStatementvbPRPSStatementStatement
CdlPRPSExecutivevbPRPSExecutiveExecutive
CdlPRPSA3vbPRPSA3A3
CdlPRPSA4vbPRPSA4A4
CdlPRPSA4SmallvbPRPSA4SmallA4 Small
CdlPRPSA5vbPRPSA5A5
CdlPRPSB4vbPRPSB4B4
CdlPRPSB5vbPRPSB5B5
CdlPRPSFoliovbPRPSFolioFolio
CdlPRPSQuartovbPRPSQuartoQuarto
CdlPRPS10x14vbPRPS10x1410x14
CdlPRPS11x17vbPRPS11x1711x17
CdlPRPSNotevbPRPSNoteNote
CdlPRPSEnv9vbPRPSEnv9Envelope #9
CdlPRPSEnv10vbPRPSEnv10Envelope #10
CdlPRPSEnv11vbPRPSEnv11Envelope #11
CdlPRPSEnv12vbPRPSEnv12Envelope #12
CdlPRPSEnv14vbPRPSEnv14Envelope #14
CdlPRPSCSheetvbPRPSCSheetC Sheet
CdlPRPSDSheetvbPRPSDSheetD Sheet
CdlPRPSESheetvbPRPSESheetE Sheet
CdlPRPSEnvDLvbPRPSEnvDLEnvelope DL
CdlPRPSEnvC5vbPRPSEnvC5Envelope C5
CdlPRPSEnvC3vbPRPSEnvC3Envelope C3
CdlPRPSEnvC4vbPRPSEnvC4Envelope C4
CdlPRPSEnvC6vbPRPSEnvC6Envelope C6
CdlPRPSEnvC65vbPRPSEnvC65Envelope C65
CdlPRPSEnvB4vbPRPSEnvB4Envelope B4
CdlPRPSEnvB5vbPRPSEnvB5Envelope B5
CdlPRPSEnvB6vbPRPSEnvB6Envelope B6
CdlPRPSEnvItalyvbPRPSEnvItalyEnvelope Italy
CdlPRPSEnvMonarchvbPRPSEnvMonarchEnvelope Monarch
CdlPRPSEnvPersonalvbPRPSEnvPersonalEnvelope Personal
CdlPRPSFanfoldUSvbPRPSFanfoldUSFanfold US
CdlPRPSFanfoldStdGermanvbPRPSFanfoldStdGermanFanfold Std German
CdlPRPSFanfoldLglGermanvbPRPSFanfoldLglGermanFanfold Lgl German
CdlPRPSUservbPRPSUser用户自定义

CdlPRBNConstants

常量说明
CdlPRBNUppervbPRBNUpper上层纸盒
CdlPRBNLowervbPRBNLower下层纸盒
CdlPRBNMiddlevbPRBNMiddle中层纸盒
CdlPRBNManualvbPRBNManual手动送纸
CdlPRBNEnvelopevbPRBNEnvelope信封纸盒
CdlPRBNEnvManualvbPRBNEnvManual信封手动送纸
CdlPRBNAutovbPRBNAuto自动送纸
CdlPRBNTractorvbPRBNTractor连续送纸
CdlPRBNSmallFmtvbPRBNSmallFmt小格式纸盒
CdlPRBNLargeFmtvbPRBNLargeFmt大格式纸盒
CdlPRBNLargeCapacityvbPRBNLargeCapacity大容量纸盒
CdlPRBNCassettevbPRBNCassette盒式纸盒

CdlPRPQConstants

常量说明
CdlPRPQHighvbPRPQHigh高质量
CdlPRPQMediumvbPRPQMedium中等质量
CdlPRPQLowvbPRPQLow低质量
CdlPRPQDraftvbPRPQDraft草稿质量

CdlPRCMConstants

常量说明
CdlPRCMMonochromevbPRCMMonochrome单色打印
CdlPRCMColorvbPRCMColor彩色打印

CdlPRDPConstants

常量说明
CdlPRDPSimplexvbPRDPSimplex单面打印
CdlPRDPHorizontalvbPRDPHorizontal双面水平翻转
CdlPRDPVerticalvbPRDPVertical双面垂直翻转

CdlOFNConstants

常量说明
CdlOFNReadOnly&H1显示只读复选框
CdlOFNOverwritePrompt&H2覆盖文件前提示
CdlOFNHideReadOnly&H4隐藏只读复选框
CdlOFNNoChangeDir&H8不改变当前目录
CdlOFNHelpButton&H10显示帮助按钮
CdlOFNNoValidate&H100不验证文件名
CdlOFNAllowMultiSelect&H200允许多选
CdlOFNExtensionDifferent&H400扩展名不同
CdlOFNPathMustExist&H800路径必须存在
CdlOFNFileMustExist&H1000文件必须存在
CdlOFNCreatePrompt&H2000创建文件提示
CdlOFNShareAware&H4000忽略共享错误
CdlOFNNoReadOnlyReturn&H8000&不返回只读文件
CdlOFNNoNetworkButton&H20000隐藏网络按钮
CdlOFNExplorer&H80000使用资源管理器风格
CdlOFNNoDereferenceLinks&H100000不解除快捷方式
CdlOFNDontAddToRecent&H2000000不添加到最近使用
CdlOFNForcesShowHidden&H10000000显示隐藏文件

CdlOFNShareViResultConstants

常量说明
CdlOFNShareViResultWarn&H0警告共享冲突
CdlOFNShareViResultNoWarn&H1不警告共享冲突
CdlOFNShareViResultFallThrough&H2忽略共享冲突

CdlCCConstants

常量说明
CdlCCRGBInit&H1使用初始颜色
CdlCCFullOpen&H2完全打开对话框
CdlCCPreventFullOpen&H4禁止完全打开
CdlCCHelpButton&H8显示帮助按钮
CdlCCSolidColor&H80仅纯色
CdlCCAnyColor&H100任意颜色

CdlCFConstants

常量说明
CdlCFScreenFonts&H1屏幕字体
CdlCFPrinterFonts&H2打印机字体
CdlCFHelpButton&H4显示帮助按钮
CdlCFEffects&H100启用效果选项
CdlCFApply&H200启用应用按钮
CdlCFScriptsOnly&H400仅脚本字体
CdlCFNoVectorFonts&H800排除矢量字体
CdlCFLimitSize&H2000限制字体大小
CdlCFFixedPitchOnly&H4000仅等宽字体
CdlCFForceFontExist&H10000字体必须存在
CdlCFScalableOnly&H20000仅可缩放字体
CdlCFTTOnly&H40000仅 TrueType 字体
CdlCFNoFaceSel&H80000无字体名选择
CdlCFNoStyleSel&H100000无样式选择
CdlCFNoSizeSel&H200000无大小选择
CdlCFSelectScript&H400000选择脚本
CdlCFNoScriptSel&H800000无脚本选择
CdlCFNoVertFonts&H1000000排除垂直字体

CdlPDConstants

常量说明
CdlPDAllPages&H0全部页面
CdlPDSelection&H1选定范围
CdlPDPageNums&H2页码范围
CdlPDNoSelection&H4禁用选定范围
CdlPDNoPageNums&H8禁用页码范围
CdlPDCollate&H10逐份打印
CdlPDPrintToFile&H20打印到文件
CdlPDPrintSetup&H40显示打印设置
CdlPDNoWarning&H80无警告
CdlPDReturnDC&H100返回设备上下文
CdlPDReturnIC&H200返回信息上下文
CdlPDReturnDefault&H400返回默认打印机
CdlPDHelpButton&H800显示帮助按钮
CdlPDUseDevModeCopies&H40000使用 DEVMODE 副本数
CdlPDUseDevModeCopiesAndCollate&H40000使用 DEVMODE 副本和逐份
CdlPDDisablePrintToFile&H80000禁用打印到文件
CdlPDCurrentPage&H400000当前页
CdlPDHidePrintToFile&H100000隐藏打印到文件
CdlPDNoNetworkButton&H200000隐藏网络按钮
CdlPDNoCurrentPage&H800000禁用当前页

CdlPDResultConstants

常量说明
CdlPDResultCancel&H0用户取消
CdlPDResultPrint&H1用户打印
CdlPDResultApply&H2用户应用

CdlHelpConstants

常量说明
CdlHelpContext&H1上下文帮助
CdlHelpQuit&H2退出帮助
CdlHelpIndex&H3帮助索引
CdlHelpContents&H3帮助目录
CdlHelpHelpOnHelp&H4关于帮助的帮助
CdlHelpSetIndex&H5设置帮助索引
CdlHelpSetContents&H5设置帮助目录
CdlHelpContextPopup&H8弹出上下文帮助
CdlHelpForceFile&H9强制帮助文件
CdlHelpKey&H101关键字帮助
CdlHelpCommandHelp&H102命令帮助
CdlHelpPartialKey&H105部分关键字帮助

CdlPSDConstants

常量说明
CdlPSDDefaultMinMargins&H0默认最小边距
CdlPSDMinMargins&H1允许设置最小边距
CdlPSDMargins&H2允许设置边距
CdlPSDInThousandthsOfInches&H4以千分之一英寸为单位
CdlPSDInHundredthsOfMillimeters&H8以百分之一毫米为单位
CdlPSDDisableMargins&H10禁用边距
CdlPSDDisablePrinter&H20禁用打印机按钮
CdlPSDNoWarning&H80无警告
CdlPSDDisableOrientation&H100禁用方向
CdlPSDDisablePaper&H200禁用纸张
CdlPSDReturnDefault&H400返回默认设置
CdlPSDHelpButton&H800显示帮助按钮
CdlPSDDisablePagePainting&H80000禁用页面绘制
CdlPSDNoNetworkButton&H200000隐藏网络按钮

CdlBIFConstants

常量说明
CdlBIFReturnOnlyFSDirs&H1仅返回文件系统目录
CdlBIFDontGoBelowDomain&H2不浏览域以下
CdlBIFStatusText&H4包含状态文本
CdlBIFReturnFSAncestors&H8返回文件系统祖先
CdlBIFEditBox&H10包含编辑框
CdlBIFValidate&H20验证输入
CdlBIFNewDialogStyle&H40新对话框样式
CdlBIFBrowseIncludeURLs&H80包含 URL
CdlBIFUseNewUI&H50使用新 UI
CdlBIFUAHint&H100用户提示
CdlBIFNoNewFolderButton&H200隐藏新建文件夹按钮
CdlBIFNoTranslateTargets&H400不翻译目标
CdlBIFBrowseForComputer&H1000仅浏览计算机
CdlBIFBrowseForPrinter&H2000仅浏览打印机
CdlBIFBrowseIncludeFiles&H4000包含文件
CdlBIFShareable&H8000&可共享
CdlBIFBrowseFileJunctions&H10000浏览文件联结点

CdlFRConstants

常量说明
CdlFRDown&H1向下搜索
CdlFRWholeWord&H2全字匹配
CdlFRMatchCase&H4区分大小写
CdlFRFindNext&H8查找下一个
CdlFRReplace&H10替换
CdlFRReplaceAll&H20全部替换
CdlFRHelpButton&H80显示帮助按钮
CdlFRNoUpDown&H400禁用方向选择
CdlFRNoMatchCase&H800禁用大小写选择
CdlFRNoWholeWord&H1000禁用全字选择
CdlFRHideUpDown&H4000隐藏方向选择
CdlFRHideMatchCase&H8000&隐藏大小写选择
CdlFRHideWholeWord&H10000隐藏全字选择

属性

Object

vb
Property Get Object() As Object

返回对象自身的实例。

CancelError

vb
Property Get/Let CancelError() As Boolean

指示用户选择"取消"时是否产生错误。

HookEvents

vb
Property Get/Let HookEvents() As Boolean

指示对话框是否可以引发需要钩子回调的事件。

Tag

vb
Property Get/Let Tag() As String

存储程序所需的附加数据。

hDC

vb
Property Get hDC() As LongPtr

返回设备上下文句柄(只读)。

Flags

vb
Property Get/Let Flags() As Long

返回/设置对话框选项标志。

DialogTitle

vb
Property Get/Let DialogTitle() As String

设置对话框标题栏显示的字符串。

MaxFileSize

vb
Property Get/Let MaxFileSize() As Long

返回/设置打开文件名的最大大小。

FileName

vb
Property Get/Let FileName() As String

返回/设置所选文件的路径和文件名。

FileTitle

vb
Property Get FileTitle() As String

返回所选文件的文件名(不含路径,只读)。

FileOffset

vb
Property Get FileOffset() As Integer

返回从路径开头到文件名的零偏移量(只读)。

Filter

vb
Property Get/Let Filter() As String

返回/设置对话框类型列表框中显示的过滤器。

FilterIndex

vb
Property Get/Let FilterIndex() As Long

返回/设置默认过滤器索引。

InitDir

vb
Property Get/Let InitDir() As String

返回/设置初始文件目录。

DefaultExt

vb
Property Get/Let DefaultExt() As String

返回/设置默认文件扩展名。

Color

vb
Property Get/Let Color() As Long

返回/设置所选颜色。

CustomColors

vb
Property Get/Let CustomColors() As Variant

返回/设置用户可选择的自定义颜色。

FontName

vb
Property Get/Let FontName() As String

返回/设置字体名称。

FontSize

vb
Property Get/Let FontSize() As Single

返回/设置字体大小(磅值)。

FontBold

vb
Property Get/Let FontBold() As Boolean

返回/设置粗体字体样式。

FontItalic

vb
Property Get/Let FontItalic() As Boolean

返回/设置斜体字体样式。

FontStrikethru

vb
Property Get/Let FontStrikethru() As Boolean

返回/设置删除线字体样式。

FontUnderline

vb
Property Get/Let FontUnderline() As Boolean

返回/设置下划线字体样式。

FontCharset

vb
Property Get/Let FontCharset() As Integer

返回/设置字体字符集。

FontWeight

vb
Property Get/Let FontWeight() As Integer

返回/设置字体粗细(0=Don'tCare, 100=Thin, 200=ExtraLight, 300=Light, 400=Normal, 500=Medium, 600=SemiBold, 700=Bold, 800=ExtraBold, 900=Heavy)。

Min

vb
Property Get/Let Min() As Long

返回/设置最小字体大小(字体对话框)或最小打印页范围(打印对话框)。

Max

vb
Property Get/Let Max() As Long

返回/设置最大字体大小(字体对话框)或最大打印页范围(打印对话框)。

FromPage

vb
Property Get/Let FromPage() As Long

返回/设置打印起始页。

ToPage

vb
Property Get/Let ToPage() As Long

返回/设置打印终止页。

Orientation

vb
Property Get/Let Orientation() As CdlPRORConstants

返回/设置打印方向。

PaperSize

vb
Property Get/Let PaperSize() As CdlPRPSConstants

返回/设置打印纸张大小。

Copies

vb
Property Get/Let Copies() As Integer

返回/设置打印份数。

PaperBin

vb
Property Get/Let PaperBin() As CdlPRBNConstants

返回/设置默认送纸器。

PrintQuality

vb
Property Get/Let PrintQuality() As CdlPRPQConstants

返回/设置打印分辨率。

ColorMode

vb
Property Get/Let ColorMode() As CdlPRCMConstants

返回/设置打印机颜色模式。

Duplex

vb
Property Get/Let Duplex() As CdlPRDPConstants

返回/设置双面打印模式。

PrinterDefault

vb
Property Get/Let PrinterDefault() As Boolean

返回/设置用户选择是否更改默认打印机。

PrinterDefaultInit

vb
Property Get/Let PrinterDefaultInit() As Boolean

返回/设置是否始终初始化默认打印机。

PrinterDriver

vb
Property Get/Let PrinterDriver() As String

返回/设置非默认打印机驱动名称。

PrinterName

vb
Property Get/Let PrinterName() As String

返回/设置非默认打印机设备名称。

PrinterPort

vb
Property Get/Let PrinterPort() As String

返回/设置非默认打印机端口名称。

HelpFile

vb
Property Get/Let HelpFile() As String

返回/设置与项目关联的帮助文件名。

HelpCommand

vb
Property Get/Let HelpCommand() As CdlHelpConstants

返回/设置联机帮助类型。

HelpContext

vb
Property Get/Let HelpContext() As LongPtr

返回/设置帮助主题的上下文 ID。

HelpKey

vb
Property Get/Let HelpKey() As String

返回/设置标识帮助主题的关键字。

PageLeftMargin

vb
Property Get/Let PageLeftMargin() As Long

返回/设置纸张左边距(设备单位)。

PageTopMargin

vb
Property Get/Let PageTopMargin() As Long

返回/设置纸张上边距(设备单位)。

PageRightMargin

vb
Property Get/Let PageRightMargin() As Long

返回/设置纸张右边距(设备单位)。

PageBottomMargin

vb
Property Get/Let PageBottomMargin() As Long

返回/设置纸张下边距(设备单位)。

PageLeftMinMargin

vb
Property Get/Let PageLeftMinMargin() As Long

返回/设置纸张最小左边距(设备单位)。

PageTopMinMargin

vb
Property Get/Let PageTopMinMargin() As Long

返回/设置纸张最小上边距(设备单位)。

PageRightMinMargin

vb
Property Get/Let PageRightMinMargin() As Long

返回/设置纸张最小右边距(设备单位)。

PageBottomMinMargin

vb
Property Get/Let PageBottomMinMargin() As Long

返回/设置纸张最小下边距(设备单位)。

RootFolder

vb
Property Get/Let RootFolder() As Variant

返回/设置文件夹浏览对话框的根文件夹。

FindWhat

vb
Property Get/Let FindWhat() As String

返回/设置查找对话框的搜索字符串。

ReplaceWith

vb
Property Get/Let ReplaceWith() As String

返回/设置替换对话框的替换字符串。

Action

vb
Property Let Action() As Integer

设置要显示的对话框类型(只写,1=打开, 2=保存, 3=颜色, 4=字体, 5=打印, 6=帮助, 7=页面设置, 8=文件夹浏览, 9=查找, 10=替换)。

方法

ShowOpen

vb
Public Function ShowOpen() As Boolean

显示"打开"对话框。成功返回 True。

ShowSave

vb
Public Function ShowSave() As Boolean

显示"保存"对话框。成功返回 True。

ShowColor

vb
Public Function ShowColor() As Boolean

显示"颜色"对话框。成功返回 True。

ShowFont

vb
Public Function ShowFont() As Boolean

显示"字体"对话框。成功返回 True。

ShowPrinter

vb
Public Function ShowPrinter() As Boolean

显示"打印"对话框。成功返回 True。

ShowPrinterEx

vb
Public Function ShowPrinterEx() As Boolean

显示"打印"扩展对话框(PrintDlgEx)。成功返回 True。

ShowHelp

vb
Public Sub ShowHelp()

显示帮助。

ShowPageSetup

vb
Public Function ShowPageSetup() As Boolean

显示"页面设置"对话框。成功返回 True。

ShowFolderBrowser

vb
Public Function ShowFolderBrowser() As Boolean

显示"文件夹浏览"对话框。成功返回 True。

ShowFind

vb
Public Function ShowFind() As Boolean

显示"查找"对话框。成功返回 True。

ShowReplace

vb
Public Function ShowReplace() As Boolean

显示"替换"对话框。成功返回 True。

事件

InitDialog

vb
Public Event InitDialog(ByVal Action As Integer, ByVal hDlg As Long)

对话框完成初始化时发生。

Help

vb
Public Event Help(ByRef Handled As Boolean, ByVal Action As Integer, ByVal hDlg As Long)

用户在对话框中点击帮助按钮时发生。

FileShareViolation

vb
Public Event FileShareViolation(ByVal FileName As String, ByRef Result As CdlOFNShareViResultConstants, ByVal hDlg As Long)

在打开或保存对话框中用户点击确定且发生网络共享冲突时发生。

FileValidate

vb
Public Event FileValidate(ByVal FileName As String, ByVal FileTitle As String, ByVal FileOffset As Integer, ByRef Cancel As Boolean, ByVal hDlg As Long)

在打开或保存对话框中用户点击确定时发生。

ColorValidate

vb
Public Event ColorValidate(ByRef RGBColor As Long, ByRef Cancel As Boolean, ByVal hDlg As Long)

在颜色对话框中用户点击确定时发生。

FontApply

vb
Public Event FontApply(ByVal Flags As Long, ByVal FontName As String, ByVal FontSize As Single, ByVal FontBold As Boolean, ByVal FontItalic As Boolean, ByVal FontStrikethru As Boolean, ByVal FontUnderline As Boolean, ByVal FontCharset As Integer, ByVal RGBColor As Long, ByVal hDlg As Long)

在字体对话框中用户点击"应用"按钮时发生。

FolderBrowserValidateFailed

vb
Public Event FolderBrowserValidateFailed(ByVal Text As String, ByRef Cancel As Boolean, ByVal hDlg As Long)

在文件夹浏览对话框中用户输入无效名称时发生。

FindNext

vb
Public Event FindNext()

在查找或替换对话框中用户点击"查找下一个"按钮时发生。

Replace

vb
Public Event Replace()

在替换对话框中用户点击"替换"按钮时发生。

ReplaceAll

vb
Public Event ReplaceAll()

在替换对话框中用户点击"全部替换"按钮时发生。

代码示例

基本用法

vb
Private Sub cmdOpen_Click()
    Dim dlg As CommonDialog
    Set dlg = New CommonDialog
    
    dlg.Filter = "文本文件 (*.txt)|*.txt|所有文件 (*.*)|*.*"
    dlg.FilterIndex = 1
    dlg.CancelError = True
    
    On Error GoTo Cancelled
    If dlg.ShowOpen() Then
        MsgBox "已选择: " & dlg.FileName
    End If
    Exit Sub
Cancelled:
    If Err.Number = CdlCancel Then Exit Sub
    MsgBox "错误: " & Err.Description
End Sub

使用事件钩子

vb
Private WithEvents dlg As CommonDialog

Private Sub cmdFont_Click()
    Set dlg = New CommonDialog
    dlg.HookEvents = True
    dlg.Flags = CdlCFScreenFonts Or CdlCFEffects Or CdlCFLimitSize
    dlg.Min = 8
    dlg.Max = 72
    dlg.ShowFont
End Sub

Private Sub dlg_FontApply(ByVal Flags As Long, ByVal FontName As String, _
    ByVal FontSize As Single, ByVal FontBold As Boolean, ByVal FontItalic As Boolean, _
    ByVal FontStrikethru As Boolean, ByVal FontUnderline As Boolean, _
    ByVal FontCharset As Integer, ByVal RGBColor As Long, ByVal hDlg As Long)
    Me.Font.Name = FontName
    Me.Font.Size = FontSize
    Me.Font.Bold = FontBold
    Me.Font.Italic = FontItalic
End Sub

VB6及其LOGO版权为微软公司所有