我在自学c++,还是菜鸟,我现在用SHBrowseForFolde调用浏览文件夹对话框,并能把路径存在savepath2中。如果我想在这基础上增加“新建文件夹”功能,并返回路径,以下代码该作哪些改动?如果要在其他地方改动,希望能说具体一点,因为我是菜鸟。听网上说增加一个参数就可以,可是我看了一些代码好复杂,弄了半天都没弄懂。,谢谢各位了!void CMyDlg::OnOK()
{
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));//指定存放文件的默认文件夹路径
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//以默认路径打开浏览文件夹对话框
TCHAR * savepath = new TCHAR[MAX_PATH];
CString savepath2="";
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,savepath);//把文件夹路径存放在savepath中
savepath2.Format(_T("%s"),savepath);
savepath2=savepath2+"\\";//在路径后增加斜杠
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//网上说pidl指向的对象用完应该释放
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
MessageBox(savepath2);//显示所选文件夹路径
}
{
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));//指定存放文件的默认文件夹路径
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//以默认路径打开浏览文件夹对话框
TCHAR * savepath = new TCHAR[MAX_PATH];
CString savepath2="";
if(pidl != NULL)
{
SHGetPathFromIDList(pidl,savepath);//把文件夹路径存放在savepath中
savepath2.Format(_T("%s"),savepath);
savepath2=savepath2+"\\";//在路径后增加斜杠
if(SUCCEEDED(SHGetMalloc(&pMalloc)))//网上说pidl指向的对象用完应该释放
{
pMalloc->Free(pidl);
pMalloc->Release();
}
}
MessageBox(savepath2);//显示所选文件夹路径
}
解决方案 »
- 关于资源dll的问题!!!!!
- 那位兄弟能推荐一两个能下图标素材的网站 自己画工具栏图标有点困难
- 关于钩子的问题
- 如何使窗口总是位于其他窗口上面?如何修改窗口图标?
- 我要写一个小软件,用什么语言实现比较好?详细请进。。。。
- 如何创建一个按钮,其风格为一个方格,有两种状态,凸或者凹。我创建了几个都是“x号”的?请高手指教!!!
- 请问哪位大侠有source insight3。1的注册码?谢谢!!
- 编译时出的错。
- vc读取大图像的问题?
- CAsyncSocket Connect距离远就连不上,网络问题还是CAsyncSocket类本身问题?
- 关于RichEdit控件中插入ole对象的问题。
- 请问,处理并发量大(几千个client),但和每个client传输的数据量都少的udp服务端,有什么好的实现架构
ZeroMemory(&bi,sizeof(BROWSEINFO));//指定存放文件的默认文件夹路径
bi.ulFlags = BIF_NEWDIALOGSTYLE;
LPMALLOC pMalloc;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);//以默认路径打开浏览文件夹对话框
error C2065: 'BIF_NEWDIALOGSTYLE' : undeclared identifier
{
CString strPath;
CFolderDialog* pFolderDlg = NULL;
LPCTSTR lpszTitle = _T( "选择文件夹" );
UINT uFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI; pFolderDlg = new CFolderDialog( lpszTitle, NULL, this, uFlags); if( pFolderDlg != NULL )
{
pFolderDlg->SetRootFolder( NULL ); if( pFolderDlg->DoModal() == IDOK )
{
strPath = pFolderDlg->GetFolderPath();
if(!strPath.IsEmpty())
strPath += "\\";
} if( pFolderDlg )
{
delete pFolderDlg;
pFolderDlg = NULL;
}
} return strPath;
}
char szPathName[MAX_PATH];
char szTitle[] = "选择路径";
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = GetSafeHwnd();
bi.pszDisplayName = szPathName;
bi.lpszTitle = szTitle;
bi.ulFlags = 0x0040 ;
CString str;
LPITEMIDLIST idl = SHBrowseForFolder(&bi);
if(idl == NULL)
{
ExportParantDir= "";
return;
}
SHGetPathFromIDList(idl, str.GetBuffer(MAX_PATH * 2));
str.ReleaseBuffer();
if(str != "" && str.GetAt(str.GetLength() - 1) != '\\')
str += "\\";
然后再写代码bi.ulFlags = BIF_NEWDIALOGSTYLE;后来我再试bi.ulFlags = 0x40;也行。谢谢大家。