Автор
|
Тема: CFileDialog &
|
Yuriy |
опубликован 04-01-2002 17:07 MSK
Доброго времени суток и с давно наступившим! У меня тут пара вопросов назрело:1) CFileDialog _dlg(TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, _T("All Files (*.*)|*.*
|
Yuriy
|
опубликован 04-01-2002 17:13 MSK
Извиняюсь, но предыдущее сообщение почему-то полностью не добавилось...1) CFileDialog _dlg(....) - как получить весь список файлов? В памяти смотрю - все есть, лежит через точку, а пытаюсь получить через _dlg.GetPathName() - выдает только каталог... 2) SHBrowseForFolder(....) - как получить полный путь? А то выдает только последний каталог, а все остальные - нет.. 8(( Как достать желаемое? |
alexsh
|
опубликован 06-01-2002 21:07 MSK
Esli ne izmeniaet pamiat, SHBrowseForFolder vozvrashaet v odnom membere file name i v drugom directory. Vot v directory i est polniy path |
Yuriy
|
опубликован 08-01-2002 10:46 MSK
Там используется структура BROWSEINFO. В lpszDisplayName возвращается только последний каталог. А другой строковый член структуры. - lpszTitle, и в нем уж точно не возвращается путь 8)), а все остальные параметры даже по типам ну никак не подходят. 8(( Просмотр содержимого этой структуры в памяти тоже не дают никаких мыслей... 8(( |
ADK
|
опубликован 08-01-2002 11:07 MSK
BROWSEINFO bi; char foldername[255]; ZeroMemory(&bi,sizeof(bi)); bi.pszDisplayName=foldername; bi.hwndOwner=hwnd; bi.lpszTitle="Âûáåðèòå ïàïêó äëÿ óñòàíîâêè:"; bi.ulFlags=BIF_RETURNONLYFSDIRS; LPITEMIDLIST lpid= SHBrowseForFolder(&bi); if(!lpid) return FALSE; SHGetPathFromIDList(lpid,foldername); SetDlgItemText(hwnd,SELECT_FOLDER_EDIT,foldername);Это мой старый код, там ещё надо очищать COM - объектик, ну это не обязательно, если прога не висит всё время в памяти. |
Yuriy
|
опубликован 08-01-2002 14:10 MSK
Ок. Спасибо огромное!... Теперь останется только разгрестись с multiselect'ом в CFileDialog.... 8)) |