这个函数会出现定位在 我的电脑 的文件夹选择对话框上,但是如果我想让它定位到某一个用户的路径上(比如 E:\gdk\标准模块 这个文件夹上),应该怎么做??
是用 SHParseDisplayName 函数吗? 但是它好象只用于 XP 上,我的 VC 不支持这个函数!怎么解决啊?
谢谢!!
是用 SHParseDisplayName 函数吗? 但是它好象只用于 XP 上,我的 VC 不支持这个函数!怎么解决啊?
谢谢!!
解决方案 »
- 请问,无标题栏对话框,如何在任务栏右键单击显示最小化菜单?
- 通过一个HICON句柄如何保存为.ico文件?
- 问题,通过什么手段能够实现从文档里读取指定的字符串?
- 在创建CButton的一个派生类时出现致命错误!
- 一个关于TreeCtrl节点中存放数据结构的问题?
- 我是一个初学者
- 怎样修改记录集的只读属性和其他的属性?急!!!!!!!
- 在vb程序中如何卸载VC++写的DLL中的窗体(关注)
- 找了一个下午的资料还是没有弄明白On_Notify(notifycode,id,func)与On_Control(notifycode,id,func)的区别
- 百思不得其解,再问一次????
- 怎么TextOut()一行文字到桌面上去?(解决后再给100)
- 关于导出函数的名称问题
CString strDisplayName; //用来得到,你选择的活页夹路径,相当于提供一个缓冲区
bi.hwndOwner=GetSafeHwnd(); //得到父窗口Handle值
bi.pidlRoot=pidlRoot; //这个变量就是我们在上面得到的.
bi.pszDisplayName=strDisplayName.GetBuffer(MAX_PATH+1); //得到缓冲区指针,
bi.lpszTitle=”网上邻居”; //设置标题
bi.ulFlags=BIF_BROWSEFORCOMPUTER; //设置标志
bi.lpfn=NULL;
bi.lParam=0;
bi.iImage=0; //上面这个是一些无关的参数的设置,最好设置起来,
SHBrowseForFolder(&lpbi); //打开对话框
strDisplayName.ReleaseBuffer(); //和上面的GetBuffer()相对应
{
if (uMsg == BFFM_INITIALIZED)
{
SendMessage(hWnd, BFFM_SETSELECTION, TRUE, lpData) ;
}
return 0 ;
}void CAddDlg::GetDir(const char *Title, CString &Path)
{
LPMALLOC pIMalloc ;
if (::SHGetMalloc(&pIMalloc))
{
return;
}
char szBuff[MAX_PATH];
BROWSEINFO bi;
::FillMemory(&bi, sizeof(BROWSEINFO), 0);
bi.hwndOwner = 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 = BrowseCallBack; //returns NULL if user cancels
ITEMIDLIST *browseList = NULL;
browseList = ::SHBrowseForFolder(&bi);
if (browseList)
{
::SHGetPathFromIDList(browseList, szBuff);
Path = szBuff;
pIMalloc->Free(browseList);
}
pIMalloc->Release() ;
}