作如下处理:
char *m_path;
char pszDisplayName[MAX_PATH];
BROWSEINFO BrowseInfo;
LPITEMIDLIST pidlBrowse;
LPMALLOC pMalloc;
if( !SUCCEEDED(SHGetMalloc(&pMalloc)) )
return;
BrowseInfo.hwndOwner = m_hWnd;
BrowseInfo.pidlRoot = NULL;
BrowseInfo.pszDisplayName = pszDisplayName;
BrowseInfo.lpszTitle = "请指定路径";
BrowseInfo.ulFlags = 0x40|BIF_RETURNONLYFSDIRS; //BIF_DONTGOBELOWDOMAIN;
BrowseInfo.lpfn = NULL;
BrowseInfo.lParam = 0;
BrowseInfo.iImage = 0;
pidlBrowse = SHBrowseForFolder(&BrowseInfo);
if( pidlBrowse!=NULL )
{
if( SHGetPathFromIDList(pidlBrowse,pszDisplayName) )
{
m_path = pszDisplayName;
//m_path += "\\";
}
pMalloc->Free(pidlBrowse);
}
pMalloc->Release();
char *m_path;
char pszDisplayName[MAX_PATH];
BROWSEINFO BrowseInfo;
LPITEMIDLIST pidlBrowse;
LPMALLOC pMalloc;
if( !SUCCEEDED(SHGetMalloc(&pMalloc)) )
return;
BrowseInfo.hwndOwner = m_hWnd;
BrowseInfo.pidlRoot = NULL;
BrowseInfo.pszDisplayName = pszDisplayName;
BrowseInfo.lpszTitle = "请指定路径";
BrowseInfo.ulFlags = 0x40|BIF_RETURNONLYFSDIRS; //BIF_DONTGOBELOWDOMAIN;
BrowseInfo.lpfn = NULL;
BrowseInfo.lParam = 0;
BrowseInfo.iImage = 0;
pidlBrowse = SHBrowseForFolder(&BrowseInfo);
if( pidlBrowse!=NULL )
{
if( SHGetPathFromIDList(pidlBrowse,pszDisplayName) )
{
m_path = pszDisplayName;
//m_path += "\\";
}
pMalloc->Free(pidlBrowse);
}
pMalloc->Release();
pMalloc->Free( ... );
pMalloc->Release( ) ;的作用是不是防止内存漏洞