一旦打开它,我就会有 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 使用一些特殊的标志吗?我已经阅读了关于 OPENFILENAME 结构的 MSN 文章,但我认为没有任何值得添加到现有标志的内容。
对可能发生的事情有任何想法吗?