char buf[1024];
BROWSEINFO bi;
ITEMIDLIST *pidl;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = buf;
bi.lpszTitle = "目录";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;pidl = SHBrowseForFolder(&bi);
if ( NULL == pidl ) return;
if ( ! SHGetPathFromIDList(pidl,buf) ) return;
这样添加了“C:\”后,可再次添加“C:\”,
请问若想要添加的路径不重复,如何实现?
BROWSEINFO bi;
ITEMIDLIST *pidl;
bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = buf;
bi.lpszTitle = "目录";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.lParam = 0;
bi.iImage = 0;pidl = SHBrowseForFolder(&bi);
if ( NULL == pidl ) return;
if ( ! SHGetPathFromIDList(pidl,buf) ) return;
这样添加了“C:\”后,可再次添加“C:\”,
请问若想要添加的路径不重复,如何实现?
{
if((msg & BFFM_INITIALIZED) == BFFM_INITIALIZED)
SetWindowText(hWnd,(char *)lpData);
return 0;
}BOOL GetPath(char * szPath, char * szTitle, char * szDlgTitle)
{
BROWSEINFO bi;
LPITEMIDLIST lpi; bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = NULL;
bi.lpszTitle = szTitle;
bi.ulFlags = BIF_RETURNONLYFSDIRS|BIF_RETURNFSANCESTORS;
bi.lpfn = (BFFCALLBACK)BrowseCallbackProc;
bi.lParam = (LPARAM)szDlgTitle;
bi.iImage = 0;
lpi = SHBrowseForFolder(&bi);
if(lpi == NULL) return FALSE; LPMALLOC pMalloc;
SHGetMalloc(&pMalloc);
SHGetPathFromIDList(lpi,szPath);
pMalloc->Free(lpi);
pMalloc->Release();
return TRUE;
}