Как сделать диалог выбора папки?
От: Аноним  
Дата: 14.10.04 05:53
Оценка:
Подскажите пожалуйста, есть ли стандартный такой диалог или
его нужно писать самому. С открытием файла все понятно — стандартный
элемент Common Dialog (comdlg32.dll) и вызов соотв. API-функции или
CFileDialog в MFC.
Но неужели нет стандартного диалог выбора папки — ведь в большинстве программ
он есть


14.10.04 10:10: Перенесено модератором из 'C/C++' — Odi$$ey
Re: Как сделать диалог выбора папки?
От: 1234  
Дата: 14.10.04 05:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите пожалуйста, есть ли стандартный такой диалог или

А>его нужно писать самому. С открытием файла все понятно — стандартный
А>элемент 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 надо было залдавать мне кажется...
Re: Как сделать диалог выбора папки?
От: artp Армения  
Дата: 14.10.04 06:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Подскажите пожалуйста, есть ли стандартный такой диалог или

А>его нужно писать самому. С открытием файла все понятно — стандартный
А>элемент Common Dialog (comdlg32.dll) и вызов соотв. API-функции или
А>CFileDialog в MFC.
А>Но неужели нет стандартного диалог выбора папки — ведь в большинстве программ
А>он есть


TCHAR path[MAX_PATH];
BROWSEINFO bi = { 0 };
bi.lpszTitle = ("TITLE");
LPITEMIDLIST pidl = SHBrowseForFolder ( &bi );
if ( pidl != 0 )
{

SHGetPathFromIDList ( pidl, path );
GetDlgItem (IDC_EDT_FFOLDER)->SetWindowText(path);
}
Re: Как сделать диалог выбора папки?
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 14.10.04 06:19
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Но неужели нет стандартного диалог выбора папки — ведь в большинстве программ

А>он есть

http://www.rsdn.ru/article/qna/ui/getfldr.xml
Автор(ы): Игорь Ткачёв
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.