请问VC里有没有 选择目录的通用对话框啊? 谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 看看CFileDialog类吧,不知道是不是你需要的。CFileDialog dlg(false);if(dlg.DoModal()==IDOK){ .....} 应该是 SHBrowseForFolder,查查MSDN吧,看看它的具体用法 CFileDialog 是文件打开/保存的对话框吧...我想要个专门选择目录的,就象VC的应用向导里那个目录选择一样谢谢 没有,楼上说的只能打开一个文件。你可以到www.codeproject.com或www.codeguru.com上下载一个不过他们都是e文网站,耐点性子吧 应该是 SHBrowseForFolder,查查MSDN吧,看看它的具体用法 TRY MY SOURCE: CString m_Title; char pszDisplayName[MAX_PATH]; TCHAR szPath[MAX_PATH]; HWND hwnd=this->GetSafeHwnd(); int nCSIDL=0 ; LPITEMIDLIST pidlRoot = NULL; LPITEMIDLIST pidlSelected = NULL; BROWSEINFO bi = {0}; LPMALLOC pMalloc = NULL; SHGetMalloc(&pMalloc); if(nCSIDL) { SHGetFolderLocation(hwnd, nCSIDL, NULL, NULL, &pidlRoot); } else { pidlRoot = NULL; } m_Title.LoadString(IDS_SELECT_FOLD); bi.hwndOwner = hwnd; bi.pidlRoot = pidlRoot; bi.pszDisplayName = (LPSTR)pszDisplayName; bi.lpszTitle = (LPCTSTR)m_Title; bi.ulFlags = BIF_NEWDIALOGSTYLE |BIF_DONTGOBELOWDOMAIN ; bi.lpfn = NULL; bi.lParam = 0; pidlSelected = SHBrowseForFolder(&bi); if(pidlRoot) { pMalloc->Free(pidlRoot); } if (!SHGetPathFromIDList(pidlSelected,szPath)) return; GetDlgItem(IDC_STANDARDDIR)->SetWindowText((LPCTSTR)szPath); 给你的email我发一个类给你,好用! 或者发到[email protected]来索取! 或发到[email protected]来索取。! 兄第解决了吗?没解决的话,我给你一个类似,Explorer的选择目录的通用对话框呵呵!Good Luck! 来个简单的:CComBSTR strPath = L""; BROWSEINFOA bi ={0}; char pszDisplayName[MAX_PATH] = "\0"; bi.hwndOwner=NULL; bi.pszDisplayName = pszDisplayName; bi.lpszTitle = "请选择.DBF文件所有的目录:"; bi.ulFlags = BIF_RETURNONLYFSDIRS; LPITEMIDLIST lpIL = SHBrowseForFolder(&bi); if(lpIL) { SHGetPathFromIDList(lpIL,bi.pszDisplayName); } strPath = bi.pszDisplayName;如果不支持ATL, 改为如下:CString strPath; BROWSEINFOA bi ={0}; char pszDisplayName[MAX_PATH] = "\0"; bi.hwndOwner=NULL; bi.pszDisplayName = pszDisplayName; bi.lpszTitle = "请选择.DBF文件所有的目录:"; bi.ulFlags = BIF_RETURNONLYFSDIRS; LPITEMIDLIST lpIL = SHBrowseForFolder(&bi); if(lpIL) { SHGetPathFromIDList(lpIL,bi.pszDisplayName); } else { strPath = _T(""); } strPath = bi.pszDisplayName; CComBSTR strPath = L""; BROWSEINFOA bi ={0}; char pszDisplayName[MAX_PATH] = "\0"; bi.hwndOwner=NULL; bi.pszDisplayName = pszDisplayName; bi.lpszTitle = "请选择.DBF文件所有的目录:"; bi.ulFlags = BIF_RETURNONLYFSDIRS; LPITEMIDLIST lpIL = SHBrowseForFolder(&bi); if(lpIL) { SHGetPathFromIDList(lpIL,bi.pszDisplayName); } strPath = bi.pszDisplayName; strPath.Append("\\EFORM_HE.DBF"); 如果不支技ATL,改为如下: CString strPath; BROWSEINFOA bi ={0}; char pszDisplayName[MAX_PATH] = "\0"; bi.hwndOwner=NULL; bi.pszDisplayName = pszDisplayName; bi.lpszTitle = "请选择.DBF文件所有的目录:"; bi.ulFlags = BIF_RETURNONLYFSDIRS; LPITEMIDLIST lpIL = SHBrowseForFolder(&bi); if(lpIL) { SHGetPathFromIDList(lpIL,bi.pszDisplayName); } else { strPath = _T(""); } strPath = bi.pszDisplayName; 位图 窗口刷新的问题 完成端口的简单问题 怎么实例化LPLOGFONT类型的指针 我有一个txt文件,如何在VC里一直读取这个文件里的内容并显示? 在对话框上能对它msflexgrid上面的报表进行打印吗? 寻求vc开发类如edi(电子制图)软件的帮助——急切等待!! 有各比较广泛的问题,希望大家帮帮忙,谢了 一个超难的问题,有兴趣的请进,关于Hook, 变量输出, 内存共享 等问题 多进程之间的Session如何共享 MSDN中的例程为什么编译时出了不少错!我是VC新手,请多帮助? 如何在同一工程中同时使用两个不同版本的stl库?请高手指教!
CFileDialog dlg(false);
if(dlg.DoModal()==IDOK)
{
.....
}
我想要个专门选择目录的,就象VC的应用向导里那个目录选择一样谢谢
你可以到www.codeproject.com或www.codeguru.com上下载一个
不过他们都是e文网站,耐点性子吧
CString m_Title;
char pszDisplayName[MAX_PATH];
TCHAR szPath[MAX_PATH]; HWND hwnd=this->GetSafeHwnd();
int nCSIDL=0 ;
LPITEMIDLIST pidlRoot = NULL;
LPITEMIDLIST pidlSelected = NULL;
BROWSEINFO bi = {0};
LPMALLOC pMalloc = NULL; SHGetMalloc(&pMalloc); if(nCSIDL)
{
SHGetFolderLocation(hwnd, nCSIDL, NULL, NULL, &pidlRoot);
} else
{
pidlRoot = NULL;
} m_Title.LoadString(IDS_SELECT_FOLD);
bi.hwndOwner = hwnd;
bi.pidlRoot = pidlRoot;
bi.pszDisplayName = (LPSTR)pszDisplayName;
bi.lpszTitle = (LPCTSTR)m_Title;
bi.ulFlags = BIF_NEWDIALOGSTYLE |BIF_DONTGOBELOWDOMAIN ;
bi.lpfn = NULL;
bi.lParam = 0; pidlSelected = SHBrowseForFolder(&bi); if(pidlRoot)
{
pMalloc->Free(pidlRoot);
} if (!SHGetPathFromIDList(pidlSelected,szPath))
return;
GetDlgItem(IDC_STANDARDDIR)->SetWindowText((LPCTSTR)szPath);
没解决的话,我给你一个类似,Explorer的选择目录的通用对话框呵呵!Good Luck!
CComBSTR strPath = L"";
BROWSEINFOA bi ={0};
char pszDisplayName[MAX_PATH] = "\0";
bi.hwndOwner=NULL;
bi.pszDisplayName = pszDisplayName;
bi.lpszTitle = "请选择.DBF文件所有的目录:";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpIL = SHBrowseForFolder(&bi);
if(lpIL)
{
SHGetPathFromIDList(lpIL,bi.pszDisplayName);
}
strPath = bi.pszDisplayName;如果不支持ATL, 改为如下:
CString strPath;
BROWSEINFOA bi ={0};
char pszDisplayName[MAX_PATH] = "\0";
bi.hwndOwner=NULL;
bi.pszDisplayName = pszDisplayName;
bi.lpszTitle = "请选择.DBF文件所有的目录:";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpIL = SHBrowseForFolder(&bi);
if(lpIL)
{
SHGetPathFromIDList(lpIL,bi.pszDisplayName);
}
else
{
strPath = _T("");
}
strPath = bi.pszDisplayName;
BROWSEINFOA bi ={0};
char pszDisplayName[MAX_PATH] = "\0";
bi.hwndOwner=NULL;
bi.pszDisplayName = pszDisplayName;
bi.lpszTitle = "请选择.DBF文件所有的目录:";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpIL = SHBrowseForFolder(&bi);
if(lpIL)
{
SHGetPathFromIDList(lpIL,bi.pszDisplayName);
}
strPath = bi.pszDisplayName;
strPath.Append("\\EFORM_HE.DBF");
如果不支技ATL,改为如下:
CString strPath;
BROWSEINFOA bi ={0};
char pszDisplayName[MAX_PATH] = "\0";
bi.hwndOwner=NULL;
bi.pszDisplayName = pszDisplayName;
bi.lpszTitle = "请选择.DBF文件所有的目录:";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpIL = SHBrowseForFolder(&bi);
if(lpIL)
{
SHGetPathFromIDList(lpIL,bi.pszDisplayName);
}
else
{
strPath = _T("");
}
strPath = bi.pszDisplayName;