23 #include "FolderDlg.h"
27 #ifndef BFFM_VALIDATEFAILED
29 #define BFFM_VALIDATEFAILED 3
31 #define BFFM_VALIDATEFAILED 4
36 #define BFFM_IUNKNOWN 5
45 IN LPCTSTR pszSelPath ,
48 : CCommonDialog( pWndParent )
51 ::ZeroMemory( &m_bi,
sizeof( BROWSEINFO ) );
52 ::ZeroMemory( m_szFolPath,
MAX_PATH );
53 ::ZeroMemory( m_szSelPath,
MAX_PATH );
57 m_bi.hwndOwner = pWndParent->GetSafeHwnd();
59 m_bi.lpszTitle = pszTitle;
61 m_bi.lpfn = (BFFCALLBACK)&BrowseCallbackProc;
62 m_bi.lParam = (
LPARAM)
this;
66 m_bi.pszDisplayName =
new TCHAR[
MAX_PATH ];
67 ASSERT( m_bi.pszDisplayName != NULL );
70 m_bi.pszDisplayName, (
MAX_PATH *
sizeof( TCHAR ) )
74 SetSelectedFolder( pszSelPath );
82 ::ZeroMemory( &
m_bi,
sizeof( BROWSEINFO ) );
105 ASSERT( AfxIsValidString( pszPath,
MAX_PATH ) );
108 IShellFolder* pDeskFolder = NULL;
110 hResult = ::SHGetDesktopFolder( &pDeskFolder );
111 if ( hResult == S_OK )
113 LPITEMIDLIST pidlRoot = NULL;
114 LPTSTR pszRoot =
const_cast< LPTSTR
>( pszPath );
120 hResult = pDeskFolder->ParseDisplayName(
121 NULL, NULL, T2W( pszRoot ), NULL, &pidlRoot, NULL
124 if( hResult == S_OK )
127 m_bi.pidlRoot = pidlRoot;
133 return ( hResult == S_OK );
141 ASSERT_VALID(
this );
142 ASSERT( AfxIsValidString( pszPath,
MAX_PATH ) );
144 return ::SHGetPathFromIDList(
m_bi.pidlRoot, pszPath );
149 ASSERT( AfxIsValidString( pszPath,
MAX_PATH ) );
155 #if ( _MFC_VER >= 0x0700 )
161 ASSERT_VALID(
this );
162 ASSERT( m_bi.lpfn != NULL );
165 m_bi.hwndOwner = PreModal();
167 LPITEMIDLIST pItemIDList = ::SHBrowseForFolder( &m_bi );
170 if( ::SHGetPathFromIDList( pItemIDList, m_szFolPath ) )
194 if(
m_bi.ulFlags & BIF_STATUSTEXT )
197 if( ::SHGetPathFromIDList( pItemIDList, szSelFol ) )
221 ASSERT( pThis != NULL );
224 pThis->m_hWnd =
hWnd;
228 case BFFM_INITIALIZED:
231 case BFFM_SELCHANGED:
245 pThis->m_hWnd = NULL;
256 ASSERT( m_hWnd != NULL );
257 ASSERT( AfxIsValidString( pszPath,
MAX_PATH ) );
269 ASSERT( m_hWnd != NULL );
273 (WPARAM)0, (
LPARAM)T2CW( pszText )
279 ASSERT( m_hWnd != NULL );
282 m_hWnd, BFFM_ENABLEOK, (WPARAM)bEnable, 0L
288 ASSERT( m_hWnd != NULL );
291 m_hWnd, BFFM_SETSELECTION,
298 ASSERT( m_hWnd != NULL );
299 ASSERT( AfxIsValidString( pszPath,
MAX_PATH ) );
302 m_hWnd, BFFM_SETSELECTION,
309 ASSERT( m_hWnd != NULL );
312 m_hWnd, BFFM_SETSTATUSTEXT,
313 (WPARAM)0, (
LPARAM)pszText
321 ASSERT( m_hWnd != NULL );
VOID SetExpanded(IN LPCTSTR pszPath)
#define BFFM_VALIDATEFAILED
VOID EnableOK(IN BOOL bEnable=TRUE)
virtual VOID OnSelChanged(IN LPITEMIDLIST pItemIDList)
virtual VOID OnInitialized(VOID)
UINT WPARAM LPARAM lParam
virtual ~CFolderDialog(VOID)
VOID SetSelection(IN LPITEMIDLIST pItemIDList)
virtual INT DoModal(VOID)
BOOL GetRootFolder(IN OUT LPTSTR pszPath)
VOID SetOKText(IN LPCTSTR pszText)
typedef INT(WINAPI *PFNWGLGETGPUINFOAMDPROC)(UINT id
typedef VOID(WINAPI *PFNWGLDELETEBUFFERREGIONARBPROC)(HANDLE hRegion)
TCHAR m_szSelPath[MAX_PATH]
VOID SetStatusText(IN LPCTSTR pszText)
virtual VOID OnIUnknown(IN IUnknown *)
virtual INT OnValidateFailed(IN LPCTSTR)
#define SAFE_COTASKMEMFREE(p)
#define SAFE_ZEROMEMORY(p, size)
BOOL SetSelectedFolder(IN LPCTSTR pszPath)