Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
-=ЮрА=-
Заблокирован
Автор FAQ
#1

IEnumIDList::Next - C++

15.06.2011, 16:54. Просмотров 753. Ответов 0
Метки нет (Все метки)

Буду краток, данный код не работает. Параметр LPITEMIDLIST pidl я передаю правильный!
Пожалусто пишите по сути...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
LPITEMIDLIST * CPidlList::MkItemIDList(LPITEMIDLIST pidl)
{
    IShellFolder *pFolder = NULL;
    IEnumIDList  *pEnum;
    ULONG fa = SFGAO_FILESYSTEM,cFetched = 0;
    if(bInit && pidl != 0)
    {
        if((hRes = pShell->BindToObject(pidl, NULL, IID_IShellFolder, (void**)&pFolder )) != S_OK)
            MessageBox(m_hWnd,StrWinError(hRes),"BindToObject ERROR",MB_OK);
        else
        {
            pList = (LPITEMIDLIST *)realloc
                    (
                        (void *)pList,
                        (1 + (nIDElm = nIDElm + 1))*sizeof(ITEMIDLIST)
                    );
            if((hRes = pFolder->EnumObjects(
                m_hWnd,
                SHCONTF_FOLDERS             |
                SHCONTF_INCLUDEHIDDEN       /*|
                SHCONTF_INCLUDESUPERHIDDEN  |
                SHCONTF_INIT_ON_FIRST_NEXT  |
                SHCONTF_SHAREABLE*/,
                &pEnum)) != S_OK)
                MessageBox(m_hWnd,StrWinError(hRes),"EnumObjects ERROR",MB_OK);
            else
            {
                while((hRes = pEnum->Next(1,&pList[nIDElm],&cFetched) == S_OK))
                {
                    SetWindowText(m_hWnd,PidlToPath(pList[nIDElm]));
                    if( SFGAO_FOLDER & fa )// ГЄГ*ГІГ*ëîã
                        MkItemIDList(pList[nIDElm]);
                    pList = (LPITEMIDLIST *)realloc
                    (
                        (void *)pList,
                        (1 + (nIDElm = nIDElm + 1))*sizeof(ITEMIDLIST)
                    );
                }
                pEnum->Release();
                pFolder->Release();
            }
        }
    }
    return pList;
}
Добавлено через 3 минуты
C++
1
while((hRes = pEnum->Next(1,&pList[nIDElm],&cFetched) == S_OK))
- если точней не работает вот этот метод pEnum->Next
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru