You can use SHBrowseForFolder(). Try something like this -
Code:
CoInitialize(0);
char szDirectory[1024];
HRESULT hr;
BROWSEINFO browseInfo;
LPITEMIDLIST lpItemList=0;
LPMALLOC lpM;
hr = SHGetMalloc (&lpM) ;
if (FAILED(hr) ) return 0;
ZeroMemory ( (PVOID) &browseInfo,sizeof (BROWSEINFO));
browseInfo.pidlRoot = 0;
browseInfo.hwndOwner = NULL;
browseInfo.pszDisplayName = szDirectory;
browseInfo.lpszTitle = "Open Folder ";
browseInfo.ulFlags = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;
browseInfo.lParam = 0;
if ((lpItemList = SHBrowseForFolder(&browseInfo)) == NULL)
{
return 0;
}
SHGetPathFromIDList(lpItemList,szDirectory);
MessageBox(0,szDirectory,"Path",0);
lpM->Free(lpItemList);
lpM->Release();