CFileDialog усекает предлагаемое имя файла
У меня странное поведение 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, но не вижу ничего, что стоило бы добавить к существующим флагам.
Есть мысли о том, что может происходить?
2 ответа
Это происходит во всех программах для меня, использующих диалог открытия файла. Я думаю, что это просто особенность недавних воплощений этого диалога.
Я столкнулся с той же проблемой, но с текстом из 42 символов. Как оказалось, дело не в числах, а в том, что у вас есть\n
в предложенном вами имени файла. Попробуйте сделать это, чтобы избежать этого:
OfferName.Replace("\n", "");