我将CommonDialog的ShowOpen设为可以多选,但是当我选择的文件多到十几个时就会出现错误,说用于存储文件名的内存太小。具体的错误如下:Run-time error "20476":
The file name buffer is too small to store the selected file name(s). (Increase MaxFileSize)请教高手如何解决?(因为只能选十几个文件不能够满足要求)。Help
The file name buffer is too small to store the selected file name(s). (Increase MaxFileSize)请教高手如何解决?(因为只能选十几个文件不能够满足要求)。Help
CommonDialog1.Flags = CommonDialog1.Flags + cdlOFNAllowMultiselect
无论是在 Windows NT 4.0 还是在 Windows 95 中,如果 cdlOFNAllowMultiselect 标志被单独使用,都不能支持长文件名。这是因为多重文件名要包括空格分隔符,而长文件名也可能包括空格符。在 Windows NT 3.5 中,无法避免这种情况。如果使用 cdlOFNAllowMultiselect,就不能看到长文件名。如果在 Windows 95 中添加 cdlOFNExplorer 标志,就可以既能文件多选,又能看到长文件名。但是,这些文件名是用空字符Chr(0)分隔符,而不是空格分隔符隔开。因此,cdlOFNAllowMultiselect 和 cdlOFNExplorer 一起使用时,在 Windows 95 和 Windows NT 3.5中需要不同的文件名所得结果的语法分析。
当使用 cdlOFNAllowMultiselect 标志时,可能希望增加 MaxFileSize 属性的尺寸以便对所选文件名有足够的内存。MaxFileSize 属性要分配内存以便存储所选的一个或多个文件的实际名称。该属性的范围是 1-32K。缺省值是 256。
下面是一个例子:
Option ExplicitPrivate Sub Command1_Click()
Dim I As Integer
Dim Y As Integer
Dim Z As Integer
Dim FileNames$()
CommonDialog1.MaxFileSize = 32000'原因就是这个属性值没有指定为足够大,默认为255
CommonDialog1.FileName = ""
CommonDialog1.Filter = "All Files|*.*"
CommonDialog1.Flags = cdlOFNAllowMultiselect + cdlOFNExplorer
CommonDialog1.ShowOpen
End Sub
文件打开/保存对话框标记
常数 值 描述
cdlOFNAllowMultiselect &H200 指定文件名列表框允许多种选择。
用户在运行时 可按下 SHIFT 键选择多个文件并用 UP ARROW 与 DOWN ARROW 键选择所要。然后,FileName 属性包含所有选定文件的字符串。用空格来为字符串中的名字分界。
cdlOFNCreatePrompt &H2000 指定对话框提示用户创建当前不存在的文件。该标记自动设置 cdlOFNPathMustExist 与 cdlOFNFileMustExist 标记。
cdlOFNExplorer &H80000 使用“Explorer-like Open A File”对话框模板。在 Windows 下使用 Windows 95 外壳时,使用该标记的公共对话框不工作。
CdlOFNExtensionDifferent &H400 指出被返回的文件名的扩展名不同于 DefaultExt 属性指定的扩展名。如果 DefaultExt 属性是Null,如果扩展名匹配,或者如果文件无扩展名,则都不设置该标记。关闭了对话框后就可检查该标记值。
cdlOFNFileMustExist &H1000 指定用户可只在文件名文本框中输入现有文件名。如果设置了该标记,而且用户输入一个无效文件名,则将出现一个警告。该标记自动设置 cdlOFNPathMustExist 标记。
cdlOFNHelpButton &H10 使对话框显示帮助按钮。
cdlOFNHideReadOnly &H4 隐藏只读复选框。
cdlOFNLongNames &H200000 使用长文件名。
cdlOFNNoChangeDir &H8 强制对话框将当前目录设置成在打开对话框时的目录。
CdlOFNNoDereferenceLinks &H100000 不间接引用外壳链接(所谓快捷方式)。根据缺省,选择外壳链接回使外壳间接引用它。
cdlOFNNoLongNames &H40000 不使用长文件名。
CdlOFNNoReadOnlyReturn &H8000 指定被返回的文件将不会有只读属性设置,也不会在写保护目录中。
cdlOFNNoValidate &H100 指定公共对话框在被返回的文件名中允许无效字符。
cdlOFNOverwritePrompt &H2 如果被选择的文件已经存在,则使“另存为”对话框生成消息框。用户必须确认是否覆盖文件。
cdlOFNPathMustExist &H800 指定用户可只输入有效的路径。如果设置该标记且用户输入无效路径,则出现一个警告消息。
cdlOFNReadOnly &H1 使在创建对话框时,开始检查只读复选框。在关闭对话框时,该标记也指出只读复选框的状态。
CdlOFNShareAware &H4000 指定将忽略共享冲突错误。
“颜色”对话框标记
常数 值 描述
cdlCCFullOpen &H2 显示整个对话框,包括定义自定义颜色区
cdlCCShowHelp &H8 使对话框显示帮助按钮
cdlCCPreventFullOpen &H4 使定义自定义颜色按钮无效,并防止用户定义自定义颜色
cdlCCRGBInit &H1 设置对话框的初始颜色值
“字体”对话框标记
常数 值 描述
cdlCFANSIOnly &H400 指定对话框只允许选择使用 Windows 字符设置的字体。如果设置该标记,则用户将不能选择只包含符号的字体。
cdlCFApply &H200 启动对话框上的应用按钮。
cdlCFBoth &H3 使对话框列举可用的打印机与屏幕字体。hDC 属性识别与打印机相关联的设备描述体。
cdlCFEffects &H100 指定对话框使划线、下划线与颜色生效。
cdlCFFixedPitchOnly &H4000 指定对话框只选择固定间距的字体。
cdlCFForceFontExist &H10000 指定如果用户要选择不存在的字体或式样,则显示错误消息框。
cdlCFHelpButton &H4 使对话框显示帮助按钮。
cdlCFLimitSize &H2000 指定对话框只在 Min 与 Max 属性指定的范围内选择字体大小。
cdlCFNoFaceSel &H80000 未选择字体名称。
cdlCFNoSimulations &H1000 指定对话框不允许图形设备接口 (GDI) 字体模拟。
cdlCFNoSizeSel &H200000 未选择字体大小。
cdlCFNoStyleSel &H100000
cdlCFNoVectorFonts &H800 指定对话框不允许选择矢量字体。
cdlCFPrinterFonts &H2 使对话框只列举 hDC 属性指定的打印机所支持的字体。
cdlCFScalableOnly &H20000 指定对话框只允许选择可缩放的字体。
cdlCFScreenFonts &H1 使对话框只列举系统支持的屏幕字体。
cdlCFTTOnly &H40000 指定对话框只允许选择 TrueType 字体。
cdlCFWYSIWYG &H8000 指定对话框只允许选择既可在打印机上又可在屏幕上使用的字体。如果设置该标记设置,则也应设置 cdlCFBoth 与 cdlCFScalableOnly 标记。
“打印”对话框标记
常数 值 描述
cdlPDAllPages &H0 返回或设置所有页选项按钮的状态。
cdlPDCollate &H10 返回或设置分页复选框的状态。
cdlPDDisablePrintToFile &H80000 使打印到复选框无效。
cdlPDHelpButton &H800 使对话框显示帮助按钮。
cdlPDHidePrintToFile &H100000 隐藏打印到文件复选框。
cdlPDNoPageNums &H8 使页选项按钮与相关联的编辑控件无效。
cdlPDNoSelection &H4 使选择选项按钮无效。
cdlPDNoWarning &H80 防止在没有缺省打印机时显示警告消息。
cdlPDPageNums &H2 返回或设置页选项按钮的状态。
cdlPDPrintSetup &H40 使系统显示“打印设置”对话框而不是“打印”对话框。
cdlPDPrintToFile &H20 返回或设置打印到文件复选框的状态。
cdlPDReturnDC &H100 返回设备描述体 以在对话框中选择打印机。在对话框的 hDC 属性中返回设备描述体。
cdlPDReturnDefault &H400 返回缺省打印机名称。
cdlPDReturnIC &H200 返回信息上下文以在对话框中选择打印机。 信息上下文提供快速方法获得有关设备的信息,而不必创建设备描述体。在对话框 hDC 属性中返回信息上下文。
cdlPDSelection &H1 返回或设置选择选项按钮的状态。如果既没有指定 cdlPDPageNums 也没有指定 cdlPDSelection,则所有选项按钮处在选择状态中。
cdlPDUseDevModeCopies &H40000 如果打印机驱动程序不支持多个复本,则设置该标记使复本编辑控件无效。如果驱动程序支持多个复本,则设置该标记指出对话框在复本属性中存储所需数量的复本。
Help 常数
常数 值 描述
cdlHelpCommandHelp &H102 对具体命令显示帮助
cdlHelpContents &H3 显示当前帮助文件中的内容主题
cdlHelpContext &H1 对具体主题显示帮助
cdlHelpContextPopup &H8 显示上下文号识别的主题
cdlHelpForceFile &H9 创建帮助文件,它只用一种字体显示文本
cdlHelpHelpOnHelp &H4 显示帮助来使用帮助应用程序本身
cdlHelpIndex &H3 显示被指定的帮助文件索引
cdlHelpKey &H101 对具体关键字显示帮助
cdlHelpPartialKey &H105 在 Windows 帮助中调用搜索引擎
cdlHelpQuit &H2 指出指定帮助文件的帮助应用程序不再被使用
cdlHelpSetContents &H5 指定特定主题作为内容主题
cdlHelpSetIndex &H5 对多索引帮助设置当前索引