LPITEMIDLIST pidlBrowse;
char szFolder[MAX_PATH];
BROWSEINFO brInfo;
::ZeroMemory(&brInfo, sizeof(BROWSEINFO));
brInfo.hwndOwner = m_hWnd; // window handle
brInfo.pidlRoot = NULL;
brInfo.pszDisplayName = (char*) szFolder;
brInfo.lpszTitle = NULL; // window title
brInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_STATUSTEXT;
brInfo.lpfn = NULL;
brInfo.lParam = 0;
::ZeroMemory(szFolder, MAX_PATH);
pidlBrowse = ::SHBrowseForFolder(&brInfo); // show dialog
if(pidlBrowse != NULL)
{
::SHGetPathFromIDList(pidlBrowse, (char*) szFolder); // get directory path
}