Здравствуйте, Аноним, Вы писали:
А>Подскажите пожалуйста, есть ли стандартный такой диалог или
А>его нужно писать самому. С открытием файла все понятно — стандартный
А>элемент Common Dialog (comdlg32.dll) и вызов соотв. API-функции или
А>CFileDialog в MFC.
А>Но неужели нет стандартного диалог выбора папки — ведь в большинстве программ
А>он есть
BOOL ret = FALSE;
BROWSEINFO bi = { 0 };
LPITEMIDLIST pidl_;
HRESULT res1 = SHGetSpecialFolderLocation(wnd, CSIDL_DRIVES, &pidl_);
bi.pidlRoot = pidl_;
bi.hwndOwner = wnd;
bi.lpszTitle = title;
bi.ulFlags = BIF_NEWDIALOGSTYLE;
LPITEMIDLIST pidl = ::SHBrowseForFolder ( &bi );
if ( pidl != 0 )
{
// get the name of the folder
TCHAR path[MAX_PATH];
if ( SHGetPathFromIDList ( pidl, path ) )
{
_tcsncpy(buffer, path, min(len, MAX_PATH));
ret = TRUE;
}
// free memory used
IMalloc * imalloc = 0;
if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
{
imalloc->Free ( pidl );
imalloc->Release ( );
}
}
if(pidl_ != 0)
{
IMalloc * imalloc = 0;
if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
{
imalloc->Free ( pidl_ );
imalloc->Release ( );
}
}
Но вообще-то это в WinApi надо было залдавать мне кажется...