c++ - CFileDialog 截断提供的文件名

标签 c++ mfc cfiledialog

CFileDialog 打开后我有奇怪的行为。提供的文件名看起来已被截断,因此只有最后 n 个字符可见:

image http://ves.fijmovi.com/cpp/CFileDialog_1.jpg

只要单击 namespace ,我就会看到整个文件名:

image http://ves.fijmovi.com/cpp/CFileDialog_2.jpg

所以它并没有真正被截断,只是显示字符串的开始位置不是从头开始。 在这种情况下,完整的文件名是 36 个字符长,我在打开对话框时得到的字符串的一部分是从第 21 个字符到最后一个。我测试了一些其他更长的文件,它们看起来也被截断了,但不是从第 21 个字符开始,而是从其他一些字符开始。我认为这没有任何意义。

这段代码已经好几年了:

// Ask user for name and location of the ZIP
CString  OfferName = DEFAULT_ZIPFILE_NAME;
CString  File_Mask = GetString (IDS_ZIP_SELECT);

CFileDialog fileDlg (TRUE, _T("zip"), OfferName,
                     OFN_EXPLORER | OFN_HIDEREADONLY | OFN_PATHMUSTEXIST | OFN_ENABLESIZING,
                     File_Mask, pStateThread->GetThreadWindow());

CString strTitleName     = GetString (IDS_ARCHIVE_CAPTION);
fileDlg.m_ofn.lpstrTitle = strTitleName;

CString  Default_Dir = pConfig->GetTricUserKey (_T("TricSupportDir"));
fileDlg.m_ofn.lpstrInitialDir = Default_Dir;

if (fileDlg.DoModal () != IDOK) {
        //..
}

我应该为 m_ofn 使用一些特殊的标志吗?我已经阅读了关于 OPENFILENAME 结构的 MSN 文章,但我没有看到任何值得添加到现有标志的文章。

对可能发生的事情有什么想法吗?

最佳答案

对我来说,所有使用打开文件对话框的软件都会出现这种情况。我认为这只是该对话的近期化身的一个特点。

关于c++ - CFileDialog 截断提供的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25210030/

相关文章:

c++ - 如何使用(配置文件)包含编译时依赖#defines 的外部头文件?

c++ - 使用 CListBox::GetTopIndex() 调试断言。想法?

c++ - 此 Microsoft CFileDialog 示例是否会导致潜在的内存违规

C++ 长除法

C++ : Vector assignment error

c++ - 利用计时器更新 MFC 文档/ View 应用程序

c++ - 初始目录不适用于 CFileDialog

c++ - 如何设置 CFileDialog 的默认文件类型?

c++ - fcgio.cpp :50: error: 'EOF' was not declared in this scope

windows - 创建生成 DLL 的应用程序