Здравствуйте 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"
Однако выбор корневого каталога с тем же путем работает...