Диалоговое окно "Выбор папки" ???
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Есть ли проще реализация диалогового окна "Выбор папки", чем через Shell ?????
SHBrowseForFolder самый простой способ.
*provided AS IS
Ну это да...
А без Шелла есть????????
А без Шелла есть????????
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Проще, чем через Shell не получится
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
У меня программа с MFC.
Я так понимаю, что код типа
LPBROWSEINFO br;
SHBrowseForFolder(br);
Ничего путного не сделает...
Примерчик можно махнуть?
Я так понимаю, что код типа
LPBROWSEINFO br;
SHBrowseForFolder(br);
Ничего путного не сделает...
Примерчик можно махнуть?
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Код: Выделить всё
#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 выбранный путь
}
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
F:\Work\dialog1\dialog1Dlg.cpp(175) : error C2065: 'IMallocPtr' : undeclared identifier
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
#include <comdef.h>
Господи, ну подправь уже сам. Это не работающий код, я его писал прямо в окошко Oper'ы, естественно в последней встроенного С++ компилятора нет
Господи, ну подправь уже сам. Это не работающий код, я его писал прямо в окошко Oper'ы, естественно в последней встроенного С++ компилятора нет
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
А что это за IMallocPtr такой?
Где достать такую зверюгу? (уж явно не в comdef.h)
Где достать такую зверюгу? (уж явно не в comdef.h)
- Romeo
- Сообщения: 3091
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\PlatformSDK\Include\ComDef.h
P.S. IMallocPtr - это не зверь. Это враппер IMalloc интерфейса, который является шеловским интерфейсом, предназначенным для менеджмента памяти при работе с шеловскими объектами. В данном случае он нужен для того, чтобы очистить память, выделенную шеловской функцией SHBrowseForFolder под pidl, соответствующий выбранной папке.
P.S. IMallocPtr - это не зверь. Это враппер IMalloc интерфейса, который является шеловским интерфейсом, предназначенным для менеджмента памяти при работе с шеловскими объектами. В данном случае он нужен для того, чтобы очистить память, выделенную шеловской функцией SHBrowseForFolder под pidl, соответствующий выбранной папке.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.