mfc CFileDialog使用IFileOpenDialog浏览文件夹
我发现下面的代码允许我浏览文件夹mfc CFileDialog使用IFileOpenDialog浏览文件夹,mfc,cfiledialog,Mfc,Cfiledialog,我发现下面的代码允许我浏览文件夹 CFileDialog od(TRUE/*bOpenFileDialog*/, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT , NULL, NULL, 0, TRUE/*bVistaStyle*/); IFileOpenDialog * openDlgPtr = od.GetIFileOpenDialog(); if ( openDl
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();
它会打开一个文件对话框“确定”,我可以选择一个文件夹,“打开”按钮变为启用状态,但按下它只会打开文件夹,而不会选择它。除非我点击Cancel,否则DoModal不会返回
你知道如何在MFC中选择文件夹吗?谢谢
顺便说一下,我知道CFolderDialog
不错的项目,但当我选择USB安装的android文件夹时,对话框返回not OK(不正常),因此除非我能修复它,否则它对我没有任何用处
更新
我也发现了这个
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设备上选择一个文件夹,但它不返回完整路径,只返回文件夹名称,该名称也没有太大用处将返回的pidl转换为字符串,如下所示:
BROWSEINFO bi = { 0 };
bi.lpszTitle = _T("Pick a Directory");
LPITEMIDLIST pidl = SHBrowseForFolder (&bi);
if (pidl != 0)
{ // convert pidl to string
TCHAR szPath[MAX_PATH];
SHGetPathFromIDList(pidl, szPath);
// free memory used
IMalloc * imalloc = 0;
if ( SUCCEEDED( SHGetMalloc(&imalloc)))
{ imalloc->Free (pidl);
imalloc->Release();
}
//_tprintf(_T("Selected Item: %s\n"), szPath);
setMobilePath(szPath);
}
试试这个
CFolderPickerDialog dlgFolder;
if (dlgFolder.DoModal() == IDOK)
{
CString strFolder = dlgFolder.GetPathName();
AfxMessageBox(strFolder);
}
谢谢,我试过了,但是当我选择andoird设备文件夹时它崩溃了。我想这是一个特殊的挂载点,我需要使用其他的东西来访问它。我意识到我试图做的无论如何都是根本错误的。android设备只在windows上显示,然后用户在android上选择USB调试模式,但大多数普通人不会这样做,因此这不是一种将我的windows应用程序与我的android应用程序同步的好方法