- /* Work's only if we're 95 capable */
- if (afxData.bWin4)
- {
- LPMALLOC pMalloc;
-
- /* Get's the Shell's default allocator */
- if (::SHGetMalloc(&pMalloc) ==
NOERROR)
- {
- BROWSEINFO bi;
- char
pszBuffer[MAX_PATH];
- LPITEMIDLIST
pidl;
-
- // Get help on
BROWSEINFO struct - it's got all the bit settings
- bi.hwndOwner =
GetSafeHwnd();
- bi.pidlRoot =
NULL;
- bi.pszDisplayName
= pszBuffer;
- bi.lpszTitle =
_T("Select a Starting Directory");
- bi.ulFlags =
BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
- bi.lpfn = NULL;
bi.lParam = 0;
-
- // This next call
issues the dialog box
- if ((pidl =
::SHBrowseForFolder(&bi)) != NULL)
- {
-
if (::SHGetPathFromIDList(pidl, pszBuffer))
-
{
-
//At this point pszBuffer contains the selected path
-
DoingSomethingUseful(pszBuffer);
-
}
-
-
// Free the PIDL allocated by SHBrowseForFolder
-
pMalloc->Free(pidl);
- }
-
- // Release the
shell's allocator
-
pMalloc->Release();
- }
- }
NOTE: This code will work on Win95
only - it's part of the shell.
bradw@netnet.net mfc-l, 9/9/95