Files

74 lines
1.3 KiB
C++
Raw Permalink Normal View History

2026-10-04 00:04:20 +08:00
#include "stdafx.h"
2026-09-28 15:28:50 +08:00
#include "resource.h"
#include "BrowseForFolder.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
CBrowseForFolder::CBrowseForFolder()
{
}
CBrowseForFolder::~CBrowseForFolder()
{
}
BOOL CBrowseForFolder::BrowseForFolder(HWND hWnd,CString& sFolder,LPCTSTR lpszTitle,UINT nFlags)
{
CString strResult = _T("");
LPMALLOC lpMalloc;
if (::SHGetMalloc(&lpMalloc) != NOERROR)
{
return FALSE;
}
TCHAR szBuffer[_MAX_PATH];
BROWSEINFO browseInfo;
TCHAR szDisplayName[_MAX_PATH];
browseInfo.hwndOwner = hWnd;
browseInfo.pidlRoot = NULL;
browseInfo.pszDisplayName = szDisplayName;
browseInfo.lpszTitle = lpszTitle;
browseInfo.ulFlags = nFlags;
browseInfo.lpfn = NULL;
browseInfo.lParam = 0;
LPITEMIDLIST lpItemIDList;
if ((lpItemIDList = ::SHBrowseForFolder(&browseInfo)) != NULL)
{
if (::SHGetPathFromIDList(lpItemIDList, szBuffer))
{
if (szBuffer[0] == _T('\0'))
{
2026-10-04 00:04:20 +08:00
AfxMessageBox(_T("获取路径失败!"),MB_ICONSTOP|MB_OK);
2026-09-28 15:28:50 +08:00
sFolder = strResult;
return FALSE;
}
sFolder = szBuffer;
return TRUE;
}
else
{
2026-10-04 00:04:20 +08:00
AfxMessageBox(_T("获取路径失败"),MB_ICONSTOP|MB_OK);
2026-09-28 15:28:50 +08:00
sFolder = strResult;
return FALSE;
}
lpMalloc->Free(lpItemIDList);
lpMalloc->Release();
}
else
{
return FALSE;
}
sFolder = strResult;
return TRUE;
}