Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по окну выбора каталогов (то, в котором каталоги - в виде дерева и нет файлов)

321
25 октября 2002 года
Doomych
124 / / 20.01.2000
Вызываю окно выбора каталогов (то, в котором каталоги - в виде дерева и нет файлов):

LPITEMIDLIST lpItemDlist;
char szWorkDir[256]; // будет хранить возвращаемое значение
BROWSEINFO bi = { NULL, NULL, szWorkDir,
"Выберите папку для резервирования:",
BIF_EDITBOX, NULL, NULL, 0 };
lpItemDlist = SHBrowseForFolder(&bi); // выводим диалоговое окно
SHGetPathFromIDList(lpItemDlist, szWorkDir); // получаем путь (szWorkDir)

Все OK, окно работает. Но как мне передать в него ту папку, на которой надо раскрыть дерево при старте окна?

В структуре BROWSEINFO есть член pidlRoot, который должен хранить путь к этой папке:

typedef struct _browseinfo {
HWND hwndOwner;
LPCITEMIDLIST pidlRoot;
LPTSTR pszDisplayName;
LPCTSTR lpszTitle;
UINT ulFlags;
BFFCALLBACK lpfn;
LPARAM lParam;
int iImage;
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;

Член pidlRoot является указателем на структуру ITEMIDLIST, член которой - экземпляр структуры SHITEMID. Как связать то, чем заполняется SHITEMID с путем к папке, я не понимаю.

Пожалуйста, объясните мне, как тут быть.

С уважением, Дмитрий
2.1K
25 октября 2002 года
kmn
29 / / 09.10.2002
Цитата:
Originally posted by Doomych
Вызываю окно выбора каталогов (то, в котором каталоги - в виде дерева и нет файлов):

LPITEMIDLIST lpItemDlist;
char szWorkDir[256]; // будет хранить возвращаемое значение
BROWSEINFO bi = { NULL, NULL, szWorkDir,
"Выберите папку для резервирования:",
BIF_EDITBOX, NULL, NULL, 0 };
lpItemDlist = SHBrowseForFolder(&bi); // выводим диалоговое окно
SHGetPathFromIDList(lpItemDlist, szWorkDir); // получаем путь (szWorkDir)

Все OK, окно работает. Но как мне передать в него ту папку, на которой надо раскрыть дерево при старте окна?

В структуре BROWSEINFO есть член pidlRoot, который должен хранить путь к этой папке:

typedef struct _browseinfo {
HWND hwndOwner;
LPCITEMIDLIST pidlRoot;
LPTSTR pszDisplayName;
LPCTSTR lpszTitle;
UINT ulFlags;
BFFCALLBACK lpfn;
LPARAM lParam;
int iImage;
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;

Член pidlRoot является указателем на структуру ITEMIDLIST, член которой - экземпляр структуры SHITEMID. Как связать то, чем заполняется SHITEMID с путем к папке, я не понимаю.

Пожалуйста, объясните мне, как тут быть.

С уважением, Дмитрий



bi.lpfn = BrowseCallbackProc;
bi.lParam = (LPARAM)szSelectedFolder;

int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
LPCTSTR lpszFolder = (LPCTSTR)lpData;
switch(uMsg)
{
case BFFM_INITIALIZED:
{
// WParam is TRUE since you are passing a path.
// It would be FALSE if you were passing a pidl.
::SendMessage(hwnd, BFFM_SETSELECTION,TRUE,(LPARAM)pszFolder);
}
break;
}
}

1.9K
03 мая 2006 года
Anton Chik
175 / / 26.09.2005
а все-таки как???
1.9K
03 мая 2006 года
Anton Chik
175 / / 26.09.2005
Цитата:
Originally posted by Anton Chik
а все-таки как???



поторопился.уже разобрался.
еще посмотреть можно здесь

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог