#include "Shlobj.h"
注:以下参考C++对应的操作方式,在CAA中可用
//选择文件夹
{
TCHAR szBuffer[MAX_PATH] = {0};
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner = NULL;
bi.pszDisplayName = szBuffer;
bi.lpszTitle = _T("选择生成的Excel文件所在文件夹:");
bi.ulFlags = BIF_RETURNONLYFSDIRS;//BIF_BROWSEINCLUDEFILES;
LPITEMIDLIST idl = SHBrowseForFolder(&bi);
if (NULL == idl)
{
return;
}
SHGetPathFromIDList(idl,szBuffer);
int iLength = WideCharToMultiByte(CP_ACP, 0, szBuffer, -1, NULL, 0, NULL, NULL);
//将tchar值赋给_char
char tablePath[500] = {};
WideCharToMultiByte(CP_ACP, 0, szBuffer, -1, tablePath, iLength, NULL, NULL);
CATUnicodeString tablePathStr = tablePath;
}
//选择文件
{
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);
SHGetPathFromIDList(idl,szBuffer);
int iLength = WideCharToMultiByte(CP_ACP, 0, szBuffer, -1, NULL, 0, NULL, NULL);
//将tchar值赋给_char
char tablePath[500] = {};
WideCharToMultiByte(CP_ACP, 0, szBuffer, -1, tablePath, iLength, NULL, NULL);
CATUnicodeString tablePathStr = tablePath;
}

本文介绍如何利用SHBrowseForFolder函数在C++中实现选择文件夹及文件的功能,通过设置BROWSEINFO结构体的不同参数,可以区分文件夹选择对话框与包含文件的文件夹选择对话框。
406

被折叠的 条评论
为什么被折叠?



