Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.14.141.228] |
|
Сообщ.
#1
,
|
|
|
Есть процедура обработки нажатия кнопки для выбора папки:
{ CString SelFolder; LPITEMIDLIST lpIID; BROWSEINFO bi; TCHAR szName[255]; ZeroMemory(&bi,sizeof(BROWSEINFO)); TCHAR Dir[MAX_PATH]; bi.hwndOwner = GetSafeHwnd(); bi.ulFlags = BIF_RETURNONLYFSDIRS; bi.lpszTitle = "Выбор папки"; bi.pszDisplayName = &Dir[0]; lpIID = SHBrowseForFolder(&bi); if(lpIID) { VERIFY ( SHGetPathFromIDList ( lpIID, szName )); SelFolder = szName; } } Все работает отлично, только как указать начальную папку в обзоре и развернуть ее? Подскажите, pls... |
Сообщ.
#2
,
|
|
|
У тебя в структуре BROWSEINFO есть pidlRoot. Его нужно заполнить. Примерно так:
LPITEMIDLIST pidlRoot = NULL; LPSHELLFOLDER pDesktopFolder = NULL; SHGetDesktopFolder(&pDesktopFolder); if ( pDesktopFolder != NULL ) { char szPath[MAX_PATH]; OLECHAR olePath[MAX_PATH]; ULONG chEaten; ULONG dwAttributes; HRESULT hr; GetCurrentDirectory(MAX_PATH, szPath); MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szPath, -1, olePath, MAX_PATH); // Convert the path to an ITEMIDLIST. hr = pDesktopFolder->ParseDisplayName(NULL, NULL, olePath, &chEaten, &pidlRoot, &dwAttributes); pDesktopFolder->Release(); } Затем bi.pidlRoot = pidlRoot; |
Сообщ.
#3
,
|
|
|
http://www.sources.ru/NonCGI/Forum2/HTML/002445.html
|