代码如下 和解? path不管是什么对话框其实路径都是在“我的电脑”上
void oxaGetDir(const char *Title, CString &Path)
{
LPMALLOC pIMalloc ;
if (::SHGetMalloc(&pIMalloc))
{
return;
}
char szBuff[MAX_PATH];
BROWSEINFO bi;
::FillMemory(&bi, sizeof(BROWSEINFO), 0);
bi.hwndOwner = NULL ;// acedGetAcadWinApp() ; // m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szBuff;
//text to display within the dialog
bi.lpszTitle = Title;
bi.ulFlags = BIF_RETURNONLYFSDIRS;// only want folders
// this is the directory you want to start from
char szPath[MAX_PATH];
lstrcpy(szPath, Path);
bi.lParam = (LPARAM)szPath;
bi.lpfn = NULL; // BrowseCallBack;
//returns NULL if user cancels
ITEMIDLIST *browseList = NULL;
browseList = ::SHBrowseForFolder(&bi);
if (browseList)
{
::SHGetPathFromIDList(browseList, szBuff);
Path = szBuff;
pIMalloc->Free(browseList);
}
pIMalloc->Release() ;
}
void oxaGetDir(const char *Title, CString &Path)
{
LPMALLOC pIMalloc ;
if (::SHGetMalloc(&pIMalloc))
{
return;
}
char szBuff[MAX_PATH];
BROWSEINFO bi;
::FillMemory(&bi, sizeof(BROWSEINFO), 0);
bi.hwndOwner = NULL ;// acedGetAcadWinApp() ; // m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szBuff;
//text to display within the dialog
bi.lpszTitle = Title;
bi.ulFlags = BIF_RETURNONLYFSDIRS;// only want folders
// this is the directory you want to start from
char szPath[MAX_PATH];
lstrcpy(szPath, Path);
bi.lParam = (LPARAM)szPath;
bi.lpfn = NULL; // BrowseCallBack;
//returns NULL if user cancels
ITEMIDLIST *browseList = NULL;
browseList = ::SHBrowseForFolder(&bi);
if (browseList)
{
::SHGetPathFromIDList(browseList, szBuff);
Path = szBuff;
pIMalloc->Free(browseList);
}
pIMalloc->Release() ;
}
解决方案 »
- 问一个关于web browser控件缩放网页的功能
- VC++中怎么把一个字符串中的最后一个数字提取出来?
- 用对话框控件工具栏创建的滑动栏控件 还用不用加载 通用控件库COMCTL32.LIB?
- vs 生成的运行文件的公司名和文件描述文件怎么该
- 如何使用CGRIDCTRL,怎么会出现这样的问题啊!
- 关于中英文切换
- 请问如何从窗口handle得到进程handle
- 一个很简单的问题
- 极度郁闷,高手请进:我在msdn抄了一段函数代码,关于Windows Multimedia的,可是加进自己的程序中,怎么都编译不过去。
- 在多线程中能否在一个线程中运行CDialg类的成员函数
- SDK CheckBox 做 CHECKED怎么做啊。 它有些什么消息啊。
- 怎么使子窗口跟着父窗口移动?
http://164.125.165.168/~uliminer/HomePage/Study/mfc/Programming/src_favorite/FolderDialog.cpp
lstrcpy(szPath, Path);
bi.lParam = (LPARAM)szPath; 无效吗?
如果需要,给我发个邮件,我给你一个可以直接指定目录的类:[email protected]
AFX_INLINE void CFolderDialog::SetSelection( IN LPITEMIDLIST lpItemIDList )
{ ASSERT( m_hWnd != NULL );
::SendMessage( m_hWnd, BFFM_SETSELECTION, (WPARAM)FALSE, (LPARAM)lpItemIDList ); }