Страница 1 из 2
Диалоговое окно "Выбор папки" ???
Добавлено: 03 окт 2004, 02:51
sand
Есть ли проще реализация диалогового окна "Выбор папки", чем через Shell ?????
Добавлено: 04 окт 2004, 11:36
Andy
SHBrowseForFolder самый простой способ.
Добавлено: 04 окт 2004, 14:05
sand
Ну это да...
А без Шелла есть????????
Добавлено: 04 окт 2004, 14:40
Romeo
Проще, чем через Shell не получится
Добавлено: 04 окт 2004, 17:41
sand
У меня программа с MFC.
Я так понимаю, что код типа
LPBROWSEINFO br;
SHBrowseForFolder(br);
Ничего путного не сделает...
Примерчик можно махнуть?
Добавлено: 04 окт 2004, 21:33
Romeo
Код: Выделить всё
#include <shlobj.h>
...
BROWSEINFO br;
TCHAR strDisplayName[MAX_PATH];
ZeroMemory(&br, sizeof(br));
br.pszDisplayName = strDisplayName;
br.lpszTitle = _T("Please select some file system folder. It is very needed for me");
br.ulFlags = BIF_RETURNONLYFSDIRS;
LPITEMIDLIST lpItemIDList = SHBrowseForFolder(&br);
if (lpItemIDList != NULL)
{
TCHAR strResultPath[MAX_PATH];
SHGetPathFromIDList(lpItemIDList, strResultPath);
IMallocPtr spMalloc;
SHGetMalloc(&spMalloc);
spMalloc->Free(lpItemIDList);
// В этом месте мы имеем в strResultPath выбранный путь
}
Добавлено: 05 окт 2004, 00:45
sand
F:\Work\dialog1\dialog1Dlg.cpp(175) : error C2065: 'IMallocPtr' : undeclared identifier
Добавлено: 05 окт 2004, 12:02
Romeo
#include <comdef.h>
Господи, ну подправь уже сам. Это не работающий код, я его писал прямо в окошко Oper'ы, естественно в последней встроенного С++ компилятора нет
Добавлено: 07 окт 2004, 00:28
sand
А что это за IMallocPtr такой?
Где достать такую зверюгу? (уж явно не в comdef.h)
Добавлено: 07 окт 2004, 12:04
Romeo
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ComDef.h
P.S. IMallocPtr - это не зверь. Это враппер IMalloc интерфейса, который является шеловским интерфейсом, предназначенным для менеджмента памяти при работе с шеловскими объектами. В данном случае он нужен для того, чтобы очистить память, выделенную шеловской функцией SHBrowseForFolder под pidl, соответствующий выбранной папке.