BROWSEINFO 结构体通常用于传递参数给 SHBrowseForFolder 函数,以便打开一个浏览文件夹的对话框。
#include <shlobj.h>
void BrowseFolder(HWND hWnd)
{
BROWSEINFO bi = { 0 };
TCHAR szDisplayName[MAX_PATH];
LPITEMIDLIST pidl;
// 设置 BROWSEINFO 结构体的各个字段
bi.hwndOwner = hWnd;
bi.pidlRoot = NULL; // 使用默认的根目录
bi.pszDisplayName = szDisplayName;
bi.lpszTitle = _T("请选择一个文件夹:");
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
// 调用 SHBrowseForFolder 函数显示文件夹选择对话框
pidl = SHBrowseForFolder(&bi);
if (pidl != NULL)
{
// 将选择的文件夹路径转换为字符串
if (SHGetPathFromIDList(pidl, szDisplayName))
{
// 在这里可以使用选择的文件夹路径进行后续操作
// 例如打开文件夹、保存路径等
AfxMessageBox(szDisplayName);
}
// 释放选择的文件夹的 ITEMIDLIST
CoTaskMemFree(pidl);
}
}