Re[4]: SHBrowseForFolder
От: Andrey_N_M Россия  
Дата: 05.04.02 03:55
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Я бы попробовал все то же сообщение BFFM_SETSELECTION, только с PIDL в качестве параметра, который формировать самому.


А не могли бы Вы привести примерчик формирования PIDL?
Я попробовал сделать это по аналогии с тем, как задается корневой каталог, но у меня ни чего не получилось

static int CALLBACK BrowseCallbackProc (HWND hWnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
    .
    .
    .
    case BFFM_INITIALIZED:
        if (lpData) {
            IShellFolder *pDF;
            if (SHGetDesktopFolder(&pDF) == NOERROR) {
                LPITEMIDLIST pIdl = NULL;
                ULONG        chEaten;
                ULONG        dwAttributes;
                HRESULT      hr;
                LRESULT      lr;

                USES_CONVERSION;
                LPOLESTR oleStr = T2OLE((LPCTSTR)lpData);

                hr = pDF->ParseDisplayName(NULL,NULL,oleStr,&chEaten,&pIdl,&dwAttributes);
                hr = pDF->Release();

                lr = SendMessage(hWnd,BFFM_SETSELECTION,FALSE,(LPARAM)pIdl);
            }
            
        }
        break;
    .
    .
    .



В результате просто раскрывается список компьютеров (в "Network Neighborhood"), выделенным остается элемент "My Computer"

Однако выбор корневого каталога с тем же путем работает...
ICQ: 100287472
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.