打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
MFC程序问题——如何通过点击按钮弹出文件目录浏览,选择目录
给你一个控制台版本的浏览目录范例程序,把main中的代码复制过去就行了。

#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=pNetHoodIDL;
bi.lpszTitle="Luoguohui "; //提示字符串
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); //释放资源
}
return 0;
}


本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
目录选择对话框
VB6.0 浏览文件夹对话框 选择文件保存路径
文件目录转成LPITEMIDLIST
引用 关于BROWSEINFO结构 - leremy163的日志 - 网易博客
VC弹出选择“文件路径”和选择“文件夹路径”对话框
vb中 打开文件夹浏览框的方法总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服