如何使用Winapi创建一个对话框来选择多个文件?

菜鸟

如何创建具有多文件选择可能性的普通文件打开对话框?我正在使用GetOpenFileName()函数打开一个对话框。

如果将设置OFN_ALLOWMULTISELECTFlags,它将出现以下对话框:

在此处输入图片说明

由于多种原因,这不是我想要的。

我希望它看起来像这样: 在此处输入图片说明

是否有任何简单/简便的解决方案,还是我必须自己重新创建整个对话框?

编辑:这是我打开对话框的代码:

OPENFILENAME ofn;
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hWnd;
ofn.lpstrFile = "selectfile";
ofn.nMaxFile = 260;
ofn.lpstrFilter = "t1\0test1\0t2\0test2\0";
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.nFilterIndex = 1;
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
ofn.lpstrTitle = TEXT("title");
GetOpenFileName(&ofn);
戴维·赫弗南

您必须同时包含OFN_EXPLORER标志和OFN_ALLOWMULTISELECT标志。

使用的缺点GetOpenFileName是必须为所选文件分配缓冲区。因此,这意味着您需要在显示对话框之前决定缓冲区的大小。这具有限制可以选择的文件数量的作用。

在Vista及更高版本上,您可以使用通用项目对话框代替GetOpenFileName新的公共项目对话框的许多改进之一是,调用方不分配缓冲区。因此,可以选择的文件数量没有限制。


您的代码的一个相当严重的问题是您没有分配缓冲区。你写了:

ofn.lpstrFile = "selectfile";

它提供了只读字符串文字而不是可变缓冲区。您需要先解决该问题,然后再继续。此代码显示了启动文件对话框并支持多选的最低要求:

OPENFILENAME ofn = { sizeof ofn };
wchar_t file[1024];
file[0] = '\0';
ofn.lpstrFile = file;
ofn.nMaxFile = 1024;
ofn.Flags = OFN_ALLOWMULTISELECT | OFN_EXPLORER;
GetOpenFileName(&ofn);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在活动顶部创建一个透明对话框

来自分类Dev

如何制作一个多重搜索对话框?

来自分类Dev

如何创建一个显示当前网页截图的打印对话框

来自分类Dev

如何从同一HTML页面上的多个按钮打开一个对话框

来自分类Dev

如何创建一个无边框对话框?

来自分类Dev

如何在Digital Micrograph脚本中用一个对话框打开多个图像?

来自分类Dev

Python GTK + 3仅弹出一个文件选择器对话框?

来自分类Dev

如何获得一个TkInter文件选择对话框以与IPython / Spyder一起使用?

来自分类Dev

通过使用另一个类的对话框来重新加载mainActivity

来自分类Dev

如何从React中的另一个文件调用对话框

来自分类Dev

WinAPI单击第一个对话框上的按钮控件并销毁第一个对话框后,创建第二个对话框

来自分类Dev

KivyMD // Python如何创建一个加载对话框(弹出窗口),该对话框在后台运行代码的同时显示一个旋转的轮子

来自分类Dev

如何创建一个包含下拉列表的HTML对话框?

来自分类Dev

如何创建对话框窗口以选择文件路径

来自分类Dev

在活动顶部创建一个透明对话框

来自分类Dev

XPages:如何创建一个带有回调到调用方的对话框

来自分类Dev

如何使用wxPython构造一个交互式对话框?

来自分类Dev

在另一个对话框上创建对话框

来自分类Dev

wpf依赖项属性显示一个对话框来选择值

来自分类Dev

创建一个用于“客户”创建/编辑的jquery对话框,该对话框可以在多个页面上使用

来自分类Dev

在页面内创建一个小对话框

来自分类Dev

如何在Windows 7上制作一个简单的文件对话框?

来自分类Dev

jQuery UI对话框打开多个对话框而不是一个

来自分类Dev

如何使Firefox 64使用“ KDE文件选择”对话框?

来自分类Dev

在MFC中,如何有一个按钮可以连续创建多个对话框实例而不关闭它们?

来自分类Dev

如何使用Android Studio创建文件选择器对话框

来自分类Dev

使用JSON文件创建对话框

来自分类Dev

是否可以提供一个对话框来选择使用Facebook登录的用户?

来自分类Dev

代号一个文件选择器对话框

Related 相关文章

  1. 1

    在活动顶部创建一个透明对话框

  2. 2

    如何制作一个多重搜索对话框?

  3. 3

    如何创建一个显示当前网页截图的打印对话框

  4. 4

    如何从同一HTML页面上的多个按钮打开一个对话框

  5. 5

    如何创建一个无边框对话框?

  6. 6

    如何在Digital Micrograph脚本中用一个对话框打开多个图像?

  7. 7

    Python GTK + 3仅弹出一个文件选择器对话框?

  8. 8

    如何获得一个TkInter文件选择对话框以与IPython / Spyder一起使用?

  9. 9

    通过使用另一个类的对话框来重新加载mainActivity

  10. 10

    如何从React中的另一个文件调用对话框

  11. 11

    WinAPI单击第一个对话框上的按钮控件并销毁第一个对话框后,创建第二个对话框

  12. 12

    KivyMD // Python如何创建一个加载对话框(弹出窗口),该对话框在后台运行代码的同时显示一个旋转的轮子

  13. 13

    如何创建一个包含下拉列表的HTML对话框?

  14. 14

    如何创建对话框窗口以选择文件路径

  15. 15

    在活动顶部创建一个透明对话框

  16. 16

    XPages:如何创建一个带有回调到调用方的对话框

  17. 17

    如何使用wxPython构造一个交互式对话框?

  18. 18

    在另一个对话框上创建对话框

  19. 19

    wpf依赖项属性显示一个对话框来选择值

  20. 20

    创建一个用于“客户”创建/编辑的jquery对话框,该对话框可以在多个页面上使用

  21. 21

    在页面内创建一个小对话框

  22. 22

    如何在Windows 7上制作一个简单的文件对话框?

  23. 23

    jQuery UI对话框打开多个对话框而不是一个

  24. 24

    如何使Firefox 64使用“ KDE文件选择”对话框?

  25. 25

    在MFC中,如何有一个按钮可以连续创建多个对话框实例而不关闭它们?

  26. 26

    如何使用Android Studio创建文件选择器对话框

  27. 27

    使用JSON文件创建对话框

  28. 28

    是否可以提供一个对话框来选择使用Facebook登录的用户?

  29. 29

    代号一个文件选择器对话框

热门标签

归档