75 lines
1.3 KiB
C++
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;
|
|
}
|