CFileDialog 截断提供的文件名

问题描述 投票:0回答:2

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

图片http://ves.fijmovi.com/cpp/CFileDialog_1.jpg

一旦我点击名称空间,我就可以看到整个文件名:

图片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 使用一些特殊的标志吗?我在 MSN 上读过有关 OPENFILENAME 结构的文章,但我发现没有什么值得添加到现有标志中的。

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

c++ mfc cfiledialog
2个回答
0
投票

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


0
投票

我遇到了同样的问题,但是是 42 个字符的文本。事实证明,这不是数字之谜,而是你有一个“ “在您提供的文件名中? 报价名称.Replace(" ”,“”);

© www.soinside.com 2019 - 2024. All rights reserved.