怎样能够产生浏览文件夹这个对话框
我想通过一个按钮打开这个系统的(浏览文件夹)对话框。
哪位高手指教一下。
问题点数:50、回复次数:4Top
1 楼bcpl(林平之)回复于 2003-09-04 13:52:12 得分 50
LPITEMIDLIST PidlBrowse(HWND hwnd, int nCSIDL, LPCTSTR lpszTitle = "选择目录")
{
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;
}
bi.hwndOwner = hwnd;
bi.pidlRoot = pidlRoot;
bi.pszDisplayName = NULL;
bi.lpszTitle = lpszTitle;
bi.ulFlags = BIF_NEWDIALOGSTYLE|BIF_EDITBOX|BIF_RETURNONLYFSDIRS ;
bi.lpfn = NULL;
bi.lParam = 0;
pidlSelected = SHBrowseForFolder(&bi);
if(pidlRoot)
{
pMalloc->Free(pidlRoot);
}
pMalloc->Release();
return pidlSelected;
}
void CShell1Dlg::OnButton1()
{
IMalloc *pMalloc;
SHGetMalloc(&pMalloc);
CString ts;
ITEMIDLIST *pidl = PidlBrowse(m_hWnd, CSIDL_DESKTOP);
SHGetPathFromIDList(pidl, ts.GetBuffer(MAX_PATH));
ts.ReleaseBuffer();
AfxMessageBox(ts);
pMalloc->Free(pidl);
pMalloc->Release();
}
Top
2 楼pengliu1998(小黑)回复于 2003-09-04 13:59:28 得分 0
请问一下这个函数PidlBrowse是不是自己封装的Top
3 楼bcpl(林平之)回复于 2003-09-04 14:07:43 得分 0
是Top
4 楼niufen(牛粪)回复于 2003-09-04 14:32:17 得分 0
LPITEMIDLIST pidlSelected = NULL;
BROWSEINFO bi = {0};
bi.hwndOwner = GetDlgItem(IDC_BUTTON_BROWSE)->GetSafeHwnd();
bi.lpszTitle = "选择路径";
char kkk[256];
// strcpy(kkk,"123456");
bi.pszDisplayName = kkk;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
pidlSelected = SHBrowseForFolder(&bi);
if(pidlSelected)
{
char buf[_MAX_PATH];
SHGetPathFromIDList(pidlSelected,buf);
if(m_Edit==buf)
{
nFlag=1;
}
else
{
nFlag=0;
}
m_Edit=buf;
LPMALLOC lpm;
if (SHGetMalloc(&lpm) == NOERROR)
lpm->Free(pidlSelected);
lpm->Release();
}Top




