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

Kev*_*Day 5 winapi openfiledialog visual-c++

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

可以在文件名字段中键入的字符数似乎受到限制(259似乎是魔幻数字-不知道为什么)。

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

lpstrFile-指向我们自己的缓冲区,大小为4K字节nMaxFile-设置为lpstrFile的大小(我们正在编译ANSI,所以实际上是4000

但是这些值似乎不会增加对话框中文件名字段的输入宽度。

我将尝试向控件发送EM_SETLIMITTEXT消息,但想知道是否还有其他解决方案。

编辑-我自己解决了这个问题:解决方案 我无法接受自己的回答,但这是后代的问题。如果其他人有更好的解决方案,请发布它-或随意修改我的解决方案,以便将来的搜索者将其放在顶部。

Kev*_*Day 4

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

相反,我使用文件GetDlgCtrl打开对话框的父级来跟踪组合框(我在OnInitDialog处理程序中执行此操作),将其转换为CComboBox*,然后调用LimitText()以设置限制。

CB_LIMITTEXT对于那些不使用 的人来说,这也可以通过向控件发送消息来完成CFileDialog。这里合适的值很可能OPENFIILENAME.nMaxFile是传入的值。