【原创】浏览文件对话框

#include <wtypes.h>
#include <atlbase.h>
#include <shlobj.h>
#include <iostream>
using namespace std;


//显示文件夹浏览对话框
//用shell提供的SHBrowseForFolder,需要一个指向BROWSEINFO结构的指针


/*  BROWSEINFO结构
HWND hwndOwner,指定对话框的父窗口的句柄
LPCITEMIDLIST pidlRoot,指定打开浏览的根目录,若为NULL,表示桌面
LPSTR pszDisplayName,指定一个缓冲区,接收用户选择的目录的显示名称
LPCSTR lpszTitle,树形视图上方显示的文字
UINT ulFlags,指定属性
BFFCALLBACK Lpfn,指定回调函数,发生某些事件时,指定的函数被调用,允许程序进一步定制对话框的行为
LPARAM lParam,若指定回调函数,参数值传递给回调函数
int iImage,代表用户选择的文件夹对象的图标在系统图标列表中的索引 */


int main()
{
BROWSEINFO bi;
::ZeroMemory(&bi,sizeof(bi));   //将bi结构清零


char szSelPath[MAX_PATH];       //被选择文件夹对象名称的缓冲区
bi.pszDisplayName=szSelPath;
//LPITEMIDLIST pNetHoodIDL;
//::SHGetSpecialFolderLocation(NULL,CSIDL_HISTORY,&pNetHoodIDL);  //根文件夹为历史文件夹
bi.pidlRoot=NULL;
bi.lpszTitle="这是打开浏览对话框……";    //提示字符串
bi.ulFlags=BIF_BROWSEINCLUDEFILES|    //允许选择文件对象
BIF_EDITBOX|                        //显示编辑框
BIF_STATUSTEXT|                     //显示状态文本
BIF_VALIDATE;                       //校验编辑框中的输入


LPITEMIDLIST pidlSel=::SHBrowseForFolder(&bi);    //打开文件夹浏览对话框
if(pidlSel!=NULL)
{
cout<<"Selected:"<<szSelPath<<endl;
CComPtr<IMalloc> pMalloc;
::SHGetMalloc(&pMalloc);
pMalloc->Free(pidlSel);   //释放资源
}
system("pause");
return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值