![]() |
|
|
![]()
|
|
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
собственно сам диалог обзора вызывается без проблем, а вот как сделать, чтобы при старте диалога уже была бы выбрана определенная папка.
если через BROWSEINFO::pidlRoot передать стартовую папку, то в диалоге отображаются, только ее содержимое, а надо задать именно папку, которая выбрана при старте диалога (т.е. чтобы все каталоги имеющиеся на компе в диалоге присутствовали). и вообще есть ли в MFC какая нибудь альтернатива SHBrowseForFolder() ? Что то неприятно с ним работать |
|||
|
||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
и еще, на форуме несколько раз задавали вопрос об использовании CFileDialog для открытия каталога, но ответа так и не последовало (я не нашел во всяком случае), так можно использовать или нет?
|
|||
|
||||
| Damarus |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
Это сообщение отредактировал(а) Damarus - 4.9.2006, 01:26 |
||||
|
|||||
| zkv |
|
|||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
Damarus спасибо за столь развернутый пример, только у меня почему то работает только в таком варианте (мне сгодится и так, привожу для сведения):
как все непросто оказывается, неужели в MFC нет ничего проще, не верится, что для открытия файла сделали класс (CFileDialog), а для папки ничего нет. Повторюсь, кто-нибудь знает наверняка, что использовать CFileDialog для открытия каталога не получится? Это сообщение отредактировал(а) zkv - 4.9.2006, 05:14 |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Теоретически можно, но требуются доработки: нужно запретить заходить в листовые папки, обработать выбор папки как выбор, а не как вход в нее и т.д. И все равно получается костыль. Когда-то очень давно именно так и делала. Но потом стала использовать SHBrowse: стандартное средство все-таки. Пользоваться напрямую, конечно, неудобно, но кто мешает обернуть это дело в класс или в функцию?
-------------------- ... |
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
zkv, то есть код, который я привёл (без изменений), у тебя не работает |
|||
|
||||
| zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 16 Всего: 92 |
Damarus, выражается в том, что нужная папка просто не выбирается, диалог появляется нормально, в коде
перед SendMessage смотрел на значение lpData, туда все правильно доходит, а как дальше проследить не знаю пробовал менять bi.ulFlags, не помогло, добавлял/прибавлял '\\' в конец пути, тоже глухо, получилось только так, как показано в моем вариатнте выше, причем мой вариант работает нормально только при сброшеном флаге BIF_NEWDIALOGSTYLE, но меня это устраивает, "ненормальность" работы заключается в том, что если указать к примеру "c:\\" или любой другой диск то он выбирается, а если добавить к пути какую нибудь папку к примеру "c:\\Program Files\\" (пробовал как со слешем на конце, так и без него), то опять таки не выбирается ничего. Работаю в 2003 студии. Всем спасибо за помощь Это сообщение отредактировал(а) zkv - 4.9.2006, 13:30 |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |