Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как открыть диалог выбора каталога? / 6 сообщений из 6, страница 1 из 1
20.01.2017, 15:13
    #39388516
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как открыть диалог выбора каталога?
Написал так:
Код: plaintext
1.
2.
3.
4.
5.
wchar_t buf[MAX_PATH];
BROWSEINFO MyBROWSEINFO;
MyBROWSEINFO.pszDisplayName = buf;
	
SHBrowseForFolder(&MyBROWSEINFO);



Но отладка проходит все строки, а диалог не открывается! Пробовал найти как заполнить переменную MyBROWSEINFO, но получить Handle родительского окна так и не удалось.

Как сделать эту элементарную задачу?
...
Рейтинг: 0 / 0
20.01.2017, 15:16
    #39388518
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как открыть диалог выбора каталога?
Кстати, есть какой-то ресурс С/С++ с примерами ответов на вопросы типа "Как это сделать?"
...
Рейтинг: 0 / 0
20.01.2017, 15:41
    #39388541
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как открыть диалог выбора каталога?
Структуры надо нулями инициализировать
Код: plaintext
1.
BROWSEINFO MyBROWSEINFO = {0};



Отладки мало, проверяй что SHBrowseForFolder() возвращает. Если ошибка, то смотри что за ошибка через GetLastError()

Ресурсы в гугле ищи. Для поиска описаловки WinAPI гугли со словом MSDN, например "MSDN SHBrowseForFolder()"
...
Рейтинг: 0 / 0
20.01.2017, 16:05
    #39388562
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как открыть диалог выбора каталога?
Dima TСтруктуры надо нулями инициализировать
Код: plaintext
1.
BROWSEINFO MyBROWSEINFO = {0};



Отладки мало, проверяй что SHBrowseForFolder() возвращает. Если ошибка, то смотри что за ошибка через GetLastError()

Ресурсы в гугле ищи. Для поиска описаловки WinAPI гугли со словом MSDN, например "MSDN SHBrowseForFolder()"

Спасибо! Инициализация нулями помогла!
Для будущих поколений напишу итоговый вариант:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
wchar_t buf[MAX_PATH], title[MAX_PATH] = L"Выберите каталог, содержащий нужные файлы";

	BROWSEINFO MyBROWSEINFO = { 0 };
	MyBROWSEINFO.pszDisplayName = buf;
	MyBROWSEINFO.lpszTitle = title;

	
	PIDLIST_ABSOLUTE itls;
	if ((itls = SHBrowseForFolder(&MyBROWSEINFO)) != NULL)
		SHGetPathFromIDList(itls, buf);
...
Рейтинг: 0 / 0
20.01.2017, 16:07
    #39388564
AlekseySQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как открыть диалог выбора каталога?
добавлю, что полный путь лежит в массиве buf
...
Рейтинг: 0 / 0
20.01.2017, 16:16
    #39388571
YUBA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как открыть диалог выбора каталога?
AlekseySQLКстати, есть какой-то ресурс С/С++ с примерами ответов на вопросы типа "Как это сделать?"MSDN и Google.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как открыть диалог выбора каталога? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]