C++实现既能选择文件又能选择文件夹的弹出对话框

在一个项目中,要实现一个上传的功能,用户点击“上传”按钮,弹出对话框,能在对话框中选择想要上传的文件或者文件夹。但开发工具提供的对话框控件,一个只能选择文件、一个只能选择文件夹。

 

如果我提供两个按钮,“上传文件”和“上传文件夹”,供用户选择,这样友好性差。

解决方案

需引入头文件:#include “Shlobj.h”

TCHAR szBuffer[MAX_PATH] = {0};
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner = NULL;
bi.pszDisplayName = szBuffer;
bi.lpszTitle = _T(“从下面选择文件或文件夹:”);
bi.ulFlags = BIF_BROWSEINCLUDEFILES;
LPITEMIDLIST idl = SHBrowseForFolder(&bi);
if ( NULL == idl )
{
return;
}
SHGetPathFromIDList(idl,szBuffer);

上面的代码就可以打开一个选择文件夹对话框了;效果如下图:

选择文件或文件夹对话框

选择文件或文件夹对话框

尚未解决的问题

上面的代码实现的效果图可以看出,是在选择文件夹对话框的效果上添加了文件选择功能;目前还不知道如何弹出类似打开文件对话框的窗口效果,能够选择文件夹的。我准备自己写一个类似的控件。

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享
评论 抢沙发