Files
envi-code/SourceCode/Code2026/EarthWormCmd/BrowseForFolder.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

75 lines
1.4 KiB
C++

#include "stdafx.h"
#include "resource.h"
#include "BrowseForFolder.h"
#include "comdef.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 = _bstr_t(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'))
{
AfxMessageBox(_T("获取路径失败!"),MB_ICONSTOP | MB_OK);
sFolder = strResult;
return FALSE;
}
sFolder = szBuffer;
return TRUE;
}
else
{
AfxMessageBox(_T("获取路径失败!"),MB_ICONSTOP|MB_OK);
sFolder = strResult;
return FALSE;
}
lpMalloc->Free(lpItemIDList);
lpMalloc->Release();
}
else
{
return FALSE;
}
sFolder = strResult;
return TRUE;
}