Я использую GetOpenFilename()
, чтобы пользователь мог выбрать файл. Вот код:GetOpenFileName() не обновляется при смене фильтра
wchar_t buffer[MAX_PATH] = { 0 };
OPENFILENAMEW open_filename = { sizeof (OPENFILENAMEW) };
open_filename.hwndOwner = handle_;
open_filename.lpstrFilter = L"Video Files\0*.avi;*.mpg;*.wmv;*.asf\0"
L"All Files\0*.*\0";
open_filename.lpstrFile = buffer;
open_filename.nMaxFile = MAX_PATH;
open_filename.lpstrTitle = L"Open media file...";
open_filename.Flags = OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
::GetOpenFileNameW(&open_filename);
диалоговое файл появляется, но когда я
- изменить фильтр или
- нажмите на "Мой компьютер"
этот файл список становится пустым. Нажатие [F5]
не помогает, но если я переключусь на родительскую папку и вернусь в исходную папку (в случае изменения фильтра), фильтрация будет прекрасной, и файлы появятся в списке.
EDIT: Моя система Windows XP (SP3) 32-разрядная - ничего особенного. Это происходит и на других машинах - с той же конфигурацией.
ваш код выглядит ОК, и диалог корректно работает на XP (скомпилирован с _WIN32_WINNT 0x0501). Каковы особенности вашего дела? Это Vista? – Andrey