Files
envi-code/SourceCode/Code2026/sqliteserver/BrowseForFolder.cpp
T
2026-09-28 15:28:50 +08:00

75 lines
1.3 KiB
C++

#include "stdafx.h"
#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'))
{
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;
}