gpt4 book ai didi

c++ - 更改过滤器时 GetOpenFileName() 不刷新

转载 作者:行者123 更新时间:2023-11-28 08:33:06 27 4
gpt4 key购买 nike

我使用 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 位 - 没什么特别的。它也发生在具有相同配置的其他机器上。

最佳答案

您还没有完成可能导致问题的一件事是完全初始化 OPENFILENAMEW 结构,尤其是 lStructSize 元素。我以前见过这会造成奇怪的影响。我建议有类似的东西

  OPENFILENAMEW open_filename = { sizeof (OPENFILENAMEW) };
ZeroMemory(&open_filename, sizeof (OPENFILENAMEW));
open_filename.lStructSize = sizeof (OPENFILENAMEW);

关于c++ - 更改过滤器时 GetOpenFileName() 不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/922204/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com