【发布时间】:2009-05-28 17:35:36
【问题描述】:
我使用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] 没有帮助,但如果我切换到父文件夹并返回到原始文件夹(在过滤器更改的情况下)过滤工作正常并且文件显示在列表中。
编辑:我的系统是 Windows XP (SP3) 32 位 - 没什么特别的。它也发生在具有相同配置的其他机器上。
【问题讨论】:
-
您的代码看起来不错,并且对话框在 XP 上运行正常(使用 _WIN32_WINNT 0x0501 编译)。你的案件的具体情况是什么?是 Vista 吗?