请教高手,关于CommonDialog的问题。

lu_yanfeng 2003-10-23 06:54:02
我将CommonDialog的ShowOpen设为可以多选,但是当我选择的文件多到十几个时就会出现错误,说用于存储文件名的内存太小。具体的错误如下:

Run-time error "20476":
The file name buffer is too small to store the selected file name(s). (Increase MaxFileSize)

请教高手如何解决?(因为只能选十几个文件不能够满足要求)。Help
...全文
183 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿建像熊猫 2003-10-24
  • 打赏
  • 举报
回复
CommonDialog 控件常数


文件打开/保存对话框标记
常数 值 描述
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 对多索引帮助设置当前索引
rainstormmaster 2003-10-23
  • 打赏
  • 举报
回复
默认为256
rainstormmaster 2003-10-23
  • 打赏
  • 举报
回复
CommonDialog控件的Flags属性有一个标志cdlOFNAllowMultiselect。利用这个标志可以实现多选。如:
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 Explicit

Private 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

flc 2003-10-23
  • 打赏
  • 举报
回复
关注
学习

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧