При использовании интерфейса Windows IFileDialog
для запуска диалогового окна «Файловый браузер» я сталкиваюсь с проблемой, если имя файла по умолчанию превышает определенное количество символов.
Имя файла выглядит усеченным, хотя оно просто оборачивается так, что мы можем видеть только последние несколько символов. Кажется, проблема в диалоге файлового браузера Windows. Всякий раз, когда имя файла по умолчанию превышает 12-13 символов, оно оборачивается.
Кто-нибудь сталкивался с такой проблемой? Есть ли обходной путь?
Сведения об ОС:
Windows 10, версия 1709 (сборка ОС 16299.1625)
Снимок диалога: ![File browser dialog with wrapped default filename](https://i.stack.imgur.com/geYBk.jpg)
Ниже приведен фрагмент кода:
Эта функция вызывается из приложения MF C, когда кнопка - «BrowseFile» нажата.
void CCustomFileBrowserNewDlg::OnBnClickedBrowseFile()
{
IFileDialog* pfd = nullptr;
IID id = CLSID_FileSaveDialog;
const COMDLG_FILTERSPEC c_rgSaveTypes[] =
{
{L"Word Document (*.doc)", L"*.doc"},
{L"Web Page (*.htm; *.html)", L"*.htm;*.html"},
{L"Text Document (*.txt)", L"*.txt"},
};
HRESULT hr = CoCreateInstance(id, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd));
if (SUCCEEDED(hr))
{
hr = pfd->SetFileTypes(ARRAYSIZE(c_rgSaveTypes), c_rgSaveTypes);
if (SUCCEEDED(hr))
{
hr = pfd->SetFileTypeIndex(1);
if (SUCCEEDED(hr))
{
//pfd->SetFileName(L"Filename.txt"); // This is okay
pfd->SetFileName(L"SomeLongFilename.txt"); // This name gets wrapped around
pfd->Show(::GetActiveWindow());
}
}
pfd->Release();
}
}