![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| AndreySol |
|
|||
|
Unregistered |
Вопрос по обработке содержимого Корзины.
Помогите начинающему в Visual C++ и MFC. Недавно получил на форуме подсказку как поиметь содержимое Корзины. Привожу код полностью. //инициализируем КОМ CoInitialize(NULL); ITEMIDLIST* pidl; //получаем PIDL для Корзины HRESULT Result; Result = SHGetSpecialFolderLocation(NULL, CSIDL_BITBUCKET, &pidl); if(SUCCEEDED(Result)) { IShellFolder *df, *sf; //получаем интерфейс для Главной Папки Result = SHGetDesktopFolder(&df); if(SUCCEEDED(Result)) { // получаем интерфейс для Корзины Result = df-> BindToObject(pidl, NULL, IID_IShellFolder, (void**)&sf); if(SUCCEEDED(Result)) { IEnumIDList *ieidl; //список файлов в корзине, для папок надо флаг SHCONTF_FOLDERS и //для каждой папки повторить процедуру, имхо Result = sf -> EnumObjects(NULL, SHCONTF_NONFOLDERS, &ieidl); if(SUCCEEDED(Result)) { ITEMIDLIST* sfidl; ULONG Cnt = 0; while(ieidl -> Next(1, &sfidl, &Cnt) == NOERROR) { STRRET fName; //получаем стуктуру "описания" файла Result = sf -> GetDisplayNameOf(sfidl, SHGDN_NORMAL, &fName); if(SUCCEEDED(Result)) { TCHAR* pszName; //получаем полный путь и имя файла Result = StrRetToStr(&fName, sfidl, &pszName); if(SUCCEEDED(Result)) { // выводим куда нибудь //Это для билдера, для VC тоже // что-нибудь вроде этого CoTaskMemFree(pszName); } } } ieidl->Release(); } sf->Release(); } df->Release(); } IMalloc *im; Result=CoGetMalloc(1,&im); if(SUCCEEDED(Result)) { if(im->DidAlloc(pidl)==1) im->Free(pidl); im->Release(); } } CoUninitialize(); При сборке получаю - error C2065: 'StrRetToStr' : undeclared identifier Пошел в MSDN, там нашел эту ф-цию для нее написано: Header shlwapi.h Import library shlwapi.lib Подключил: в cpp - файле #include "shlwapi.h", а в настройках проекта "Link -> General -> Object\Library modules - shlwapi.lib Собираю опять - снова error C2065: 'StrRetToStr' : undeclared identifier Помогите ! Что не так делаю ? На всякий случай - у меня WinMe и Visual C++ 6.0 + SP 5. Заранее спасибо за ответы и подсказки. |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
В Vc.net вроде всё нормально.
У тебя линкер даёт ошибку или компилятор? |
|||
|
||||
| AndreySol |
|
|||
|
Unregistered |
Олегу М.
На другом форуме получил такой ответ на мой вопрос: "А ты в хедер заглядывал? Я так думаю, что там этого определния нет... А появится оно там после установки Platform SDK. Поэтому, можешь просто где-нить в исходнике объявить эту функцию: #ifndef StrRetToStr HRESULT StrRetToStr( LPSTRRET pstr, LPCITEMIDLIST pidl, LPTSTR *ppszName ); #endif Чтобы собиралось как с Platform SDK, так и без него, описание функции внесем под условный define". Буду пробовать. Всем спасибо. |
|||
|
||||
| Олег М |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 436 Регистрация: 10.6.2004 Где: Москва Репутация: 7 Всего: 7 |
В том то и дело, что для начала я заглянул в заголовок в VC60. Устанавливать студию просто не стал. Всё там есть.
|
|||
|
||||
| AndreySol |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 19.6.2004 Репутация: нет Всего: 1 |
Получилось как подсказали, все работает.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |