16,372
社区成员




// 修改文件目录
void CBuildNode::OnBnClickedButton3()
{
BROWSEINFO bi; //BROWSEINFO结构体
wchar_t Buffer[512]=_T("");
wchar_t dirBuff[256];
bi.hwndOwner=m_hWnd; //m_hWnd你的程序主窗口
bi.pidlRoot=NULL;
bi.pszDisplayName=Buffer; //返回选择的目录名的缓冲区
bi.lpszTitle=_T("选择当前目录"); //弹出的窗口的文字提示
bi.ulFlags= BIF_NEWDIALOGSTYLE; //只返回目录。其他标志看MSDN
bi.lpfn=NULL; //回调函数,有时很有用
bi.lParam=0;
bi.iImage=0;
ITEMIDLIST* pidl=::SHBrowseForFolder(&bi); //显示弹出窗口,ITEMIDLIST很重要
if(::SHGetPathFromIDList(pidl,dirBuff)) //在ITEMIDLIST中得到目录名的整个路径
{
//成功
m_chSaveDir=dirBuff;
SetCurrentDirectory(m_chSaveDir); // 设置到选定的目录
theApp.WriteProfileStringW(_T(WORKER_PARAM),_T(TENEMENT_DIR),m_chSaveDir); // 写注册表
UpdateData(false); // 写控件
}
FineNodeList(); // 刷新文件浏览
}