我发现以下代码允许我浏览文件夹
CFileDialog od(TRUE/*bOpenFileDialog*/, NULL, NULL, OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT , NULL, NULL, 0, TRUE/*bVistaStyle*/);
IFileOpenDialog * openDlgPtr = od.GetIFileOpenDialog();
if ( openDlgPtr != NULL )
{
openDlgPtr->SetOptions(FOS_PICKFOLDERS);
openDlgPtr->Release();
}
int r = od.DoModal();
它会打开一个文件对话框,我可以选择一个文件夹,然后“打开”按钮就会启用,但按下它只会打开文件夹,它不会选择它。除非我点击取消,否则 DoModal 不会返回
任何想法如何在 MFC 中选择文件夹?谢谢
顺便说一句,我知道 CFolderDialog http://www.codeproject.com/Articles/2024/CFolderDialog-Selecting-Folders?msg=4497794#xx4497794xx
不错的项目,但是当我选择我的 USB 安装的 android 文件夹时,对话框返回不正常,所以它对我没有用,除非我能修复它
更新
我也发现了这个
BROWSEINFO bi = { 0 };
TCHAR path[MAX_PATH];
bi.lpszTitle = _T("Pick a Directory");
bi.pszDisplayName = path;
LPITEMIDLIST pidl = SHBrowseForFolder ( &bi );
if ( pidl != 0 )
{
// get the name of the folder
//_tprintf ( _T("Selected Item: %s\n"), path );
// free memory used
IMalloc * imalloc = 0;
if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
{
imalloc->Free ( pidl );
imalloc->Release ( );
}
setMobilePath(path);
}
这确实允许我在我的 android 设备上选择一个文件夹,但它不返回完整路径,只是文件夹名称也没有多大用处