我们的应用程序,允许多个文件可选择在一个文件选择对话,这显示过来使用功能(这一问题也适用于人们使用CFileDialog,等等。)

似乎有一种限制的数字可以输入的名字段(259似乎是一个神奇的数字-不知道为什么)。

我们试图改变下列成员 OPENFILENAME 结构:

lpstrFile点我们自己的缓冲器,尺寸在4K字节 nMaxFile设置的尺寸lpstrFile(我们正在编制ANSI,所以这实际上是4000

但是这些数值似乎不增加输入宽度的文件领域中的对话。

我要试验发送EM_SETLIMITTEXT消息给控制,但想知道如果有人别的有一个解决方案。

编辑-解决了这个我自己: 解决方案 我不能接受我自己的答案,但这里它对于子孙后代。如果任何人有一个更好的解决方案,请它发布-或感觉到国防部了我的解决方案,使未来的搜索者将会找到它的顶部。

有帮助吗?

解决方案

原来,编辑控制(至少在我的开发环境)是一个组合框,所以EM_SETLIMITTEXT是不恰当的。

相反,我找到了使用上的文件打开对话框的父GetDlgCtrl组合框(我这样做是在OnInitDialog处理),投它CComboBox*,然后调用LimitText()设定的上限。

这也可以通过发送CB_LIMITTEXT消息,对于那些你谁不与CFileDialog工作的控制来完成。这里的合适的值是最有可能的是传入的OPENFIILENAME.nMaxFile值。

其他提示

命名上MSDN 文件或目录:

  

在在Windows API(在下面的段落中讨论的一些例外),对于路径的最大长度为MAX_PATH,其被定义为260个字符。

即使你能迫使更长的串出来的对话框,您可以使用已经编码对MAX_PATH API时遇到麻烦了线。

在文档继续说:

  

在Windows API的具有许多功能   也使用Unicode版本   允许用于一个扩展长度路径   的32,767最大总路径长度   字符。这种类型的路径是   由分离元件组成的   反斜线,每到值   在返回   的lpMaximumComponentLength参数   该GetVolumeInformation函数。至   指定一个扩展长度路径,使用   该"\\?\"前缀。例如,   "\\?\D:\<very long path>"。 (该   < >这里用于字符   视觉清晰度并不能成为其中的一部分   有效的路径串。)

我相信这是一个硬性限制不能被绕过。应该没关系的唯一情况是,当你要选择一个以上的文件,因为限制是不够的最大文件名长度。

我已经添加的“所有文件”按钮,这些对话框用于打开所有文件夹中的文件的;这是我发现的唯一的解决方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top