代码之家  ›  专栏  ›  技术社区  ›  Kevin Day

增加GetOpenFileName文件选择对话框文件名字段中的字符数

  •  4
  • Kevin Day  · 技术社区  · 17 年前

    我们的应用程序允许在文件选择对话框中选择多个文件,该对话框通过GetOpenFileName函数显示(这个问题也适用于使用CFileDialog等的人)

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

    我们已尝试更改以下成员: OPENFILENAME 结构:

    lpstrFile-指向我们自己的缓冲区,大小为4K字节

    我将尝试向控件发送一条EM_setlimit文本消息,但想知道是否有其他人有解决方案。

    编辑-自己解决了这个问题: solution

    3 回复  |  直到 9 年前
        1
  •  4
  •   Brian R. Bondy    15 年前

    事实证明编辑控件(至少在我的开发环境中)是一个组合框,所以 EM_SETLIMITTEXT 这不合适。

    GetDlgCtrl 在“文件打开”对话框的父级上(我在 OnInitDialog 处理程序),将其转换为 CComboBox* LimitText() 设置限制。

    这也可以通过发送 CB_LIMITTEXT 发送给控件的消息,供不使用的用户使用 CFileDialog . 此处的适当值很可能是 OPENFIILENAME.nMaxFile 传入的值。

        2
  •  2
  •   Frank Krueger    17 年前

    从…起 Naming a File or Directory on MSDN :

    MAX_PATH

    即使您可以强制较长的字符串退出对话框,但在使用针对其编码的API时,您可能会遇到麻烦 最大路径 .

    文件接着说:

    Windows API有许多函数 也可以使用Unicode版本 最大总路径长度为32767 人物。这种类型的路径是 反斜杠,每个反斜杠的值 返回 GetVolumeInformation函数。到 指定扩展长度路径,请使用 "\\?\" 前缀例如 "\\?\D:\<very long path>" . (修订) 人物 < > 视觉清晰度,且不能成为 有效路径字符串。)

        3
  •  0
  •   Mark Ransom    17 年前

    我在这些对话框中添加了一个“所有文件”按钮,用于打开文件夹中的所有文件;这是我找到的唯一解决办法。