请问MFC中选择路径是用那个类? 请问MFC中选择路径的对话框是用那个类?我知道选择文件是用CFileDialog,但是选择路径的对话框使用那个类忘了,以前是见过的。请问那位知道? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一个api SHBrowseForFolder 列出树http://msdn.microsoft.com/en-us/library/bb762115(VS.85).aspx 这个我记得好像没有专门的像CFileDialog的类 有的,列出来就是一个tree的窗口。 XFolderDialog,新式目录选择框http://blog.csdn.net/DavidHsing/archive/2009/03/10/3977589.aspx char Dir[100];ITEMIDLIST *pidl;bi.hwndOwner = NULL;bi.pidlRoot = NULL;bi.pszDisplayName = Dir;bi.lpszTitle = "选择一个目录";bi.ulFlags = BIF_RETURNONLYFSDIRS;bi.lpfn = NULL;bi.lParam = 0;bi.iImage = 0;pidl = SHBrowseForFolder( &bi );if( pldl == NULL ) Dir[0]=0;if(!SHGetPathFromIDList( pidl, Dir )) Dir[0]=0; /** 函数功能:选择目录* 参数说明:m_hWndParam,窗口* strReturn,[out]路径* 返回值:TRUE,表示选择目录;FLASE,没有选择目录*/BOOL GetDirectionBySelectDlg(HWND m_hWndParam,CString & strReturn){ BOOL bR = TRUE; BROWSEINFO bi; TCHAR Buffer[MAX_PATH]; memset(Buffer,0,MAX_PATH*sizeof(TCHAR)); TCHAR FullPath[MAX_PATH]; memset(FullPath,0,MAX_PATH*sizeof(TCHAR)); bi.hwndOwner = m_hWndParam; bi.pidlRoot = NULL; bi.pszDisplayName = Buffer; bi.lpszTitle = "选择目录"; bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0; ITEMIDLIST *pidl = ::SHBrowseForFolder(&bi);//显示弹出窗口 if(::SHGetPathFromIDList(pidl,FullPath)) { strReturn = FullPath; bR = TRUE; } else { strReturn = ""; bR = FALSE; } return bR;} BROWSEINFO bi; ZeroMemory(&bi,sizeof(BROWSEINFO)); LPMALLOC pMalloc; LPITEMIDLIST pidl = SHBrowseForFolder(&bi); TCHAR * path = new TCHAR[MAX_PATH]; if(pidl != NULL) { SHGetPathFromIDList(pidl,path); if(strcmp(path,"")!=0) { SetDlgItemText(IDC_EDIT2,path); } if(SUCCEEDED(SHGetMalloc(&pMalloc))) { pMalloc->Free(pidl); pMalloc->Release(); } } delete path;// 肯定没有像CFileDialog这样专门的类! win7 vs08 MFC 开机启动 RegSetValueEx返回5 基于对话框程序如何响应OnNewWindow2事件 gdi+中的image为什么不能先声明然后调用image.fromfile 急,在线等待,关于cdc 绘图的确问题 字符串截取问题 如何在安装程序里做数据库的驱动? 各位前辈!能告诉我什么样的图是--半色调图--吗? 会做ATL Service 的人,情教教我,谢谢!最好斑竹来帮帮忙. 对话框中的static文本怎样让它移动位置??? 菜鸟又来送分啦!! 关于GetProcessId()的问题 问一个简单的问题!刚换成了VS2008,居然不知道在哪里添加库链接?
http://msdn.microsoft.com/en-us/library/bb762115(VS.85).aspx
有的,列出来就是一个tree的窗口。
http://blog.csdn.net/DavidHsing/archive/2009/03/10/3977589.aspx
ITEMIDLIST *pidl;bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = Dir;
bi.lpszTitle = "选择一个目录";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;pidl = SHBrowseForFolder( &bi );
if( pldl == NULL ) Dir[0]=0;
if(!SHGetPathFromIDList( pidl, Dir )) Dir[0]=0;
* 函数功能:选择目录
* 参数说明:m_hWndParam,窗口
* strReturn,[out]路径
* 返回值:TRUE,表示选择目录;FLASE,没有选择目录
*/
BOOL GetDirectionBySelectDlg(HWND m_hWndParam,CString & strReturn)
{
BOOL bR = TRUE;
BROWSEINFO bi;
TCHAR Buffer[MAX_PATH];
memset(Buffer,0,MAX_PATH*sizeof(TCHAR));
TCHAR FullPath[MAX_PATH];
memset(FullPath,0,MAX_PATH*sizeof(TCHAR));
bi.hwndOwner = m_hWndParam;
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer;
bi.lpszTitle = "选择目录";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;
ITEMIDLIST *pidl = ::SHBrowseForFolder(&bi);//显示弹出窗口
if(::SHGetPathFromIDList(pidl,FullPath))
{
strReturn = FullPath;
bR = TRUE;
}
else
{
strReturn = "";
bR = FALSE;
}
return bR;
}
ZeroMemory(&bi,sizeof(BROWSEINFO));
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
TCHAR * path = new TCHAR[MAX_PATH];
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,path);
if(strcmp(path,"")!=0)
{
SetDlgItemText(IDC_EDIT2,path);
}
if(SUCCEEDED(SHGetMalloc(&pMalloc)))
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
delete path;//