CFileDialog打开后会有奇怪的行为。提供的文件名看起来像一样被截断,因此只有最后n个字符可见:
image http://ves.fijmovi.com/cpp/CFileDialog_1.jpg
只要点击空格查看名称,我就会看到整个文件名:
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文章,但我认为没有什么值得添加到现有标志。
有关可能发生的事情的任何想法?
答案 0 :(得分:0)
在使用打开文件对话框的所有软件中都会发生这种情况。我认为这只是该对话的近期化身的一个特点。