Класс CShellManager

Реализует несколько методов, которые позволяют работать с указателями в списках идентификаторов (PIDL).

Синтаксис

class CShellManager : public CObject

Участники

Открытые конструкторы

Имя Описание
CShellManager::CShellManager Формирует объект CShellManager.

Открытые методы

Имя Описание
CShellManager::BrowseForFolder Отображает диалоговое окно, позволяющее пользователю выбрать папку оболочки.
CShellManager::ConcatenateItem Объединяет два ПИН-адреса.
CShellManager::CopyItem Создает новый PIDL и копирует в него предоставленный PIDL.
CShellManager::CreateItem Создает новый PIDL указанного размера.
CShellManager::FreeItem Удаляет предоставленный PIDL.
CShellManager::GetItemCount Возвращает количество элементов в предоставленном PIDL.
CShellManager::GetItemSize Возвращает размер предоставленного PIDL.
CShellManager::GetNextItem Возвращает следующий элемент из PIDL.
CShellManager::GetParentItem Извлекает родительский элемент указанного элемента.
CShellManager::ItemFromPath Извлекает PIDL для элемента, определяемого указанным путем.

Замечания

Методы CShellManager класса все имеют дело с PID-файлами. PIDL — это уникальный идентификатор объекта оболочки.

Не следует создавать CShellManager объект вручную. Он будет автоматически создан платформой приложения. Однако необходимо вызвать CWinAppEx::InitShellManager во время процесса инициализации приложения. Чтобы получить указатель на диспетчер оболочки для приложения, вызовите CWinAppEx::GetShellManager.

Иерархия наследования

CObject

CShellManager

Требования

Заголовок: afxshellmanager.h

CShellManager::BrowseForFolder

Отображает диалоговое окно, позволяющее пользователю выбрать папку оболочки.

BOOL BrowseForFolder(
    CString& strOutFolder,
    CWnd* pWndParent = NULL,
    LPCTSTR lplszInitialFolder = NULL,
    LPCTSTR lpszTitle = NULL,
    UINT ulFlags = BIF_RETURNONLYFSDIRS,
    LPINT piFolderImage = NULL);

Параметры

strOutFolder
[out] Строка, используемая методом для хранения пути выбранной папки.

pWndParent
[in] Указатель на родительское окно.

lplszInitialFolder
[in] Строка, содержащая папку, выбранную по умолчанию при отображении диалогового окна.

lpszTitle
[in] Заголовок диалогового окна.

ulFlags
[in] Флаги, указывающие параметры диалогового окна. Подробные описания см. в разделе BROWSEINFO .

PiFolderImage
[out] Указатель на целочисленное значение, в котором метод записывает индекс изображения выбранной папки.

Возвращаемое значение

Ненулевое значение, если пользователь выбирает папку из диалогового окна; в противном случае — 0.

Замечания

При вызове этого метода приложение создает и отображает диалоговое окно, позволяющее пользователю выбрать папку. Метод записывает путь к папке в параметр strOutFolder .

Пример

В следующем примере показано, как получить ссылку на CShellManager объект с помощью CWinAppEx::GetShellManager метода и как использовать BrowseForFolder метод. Этот фрагмент кода является частью примера Обозреватель.

CString strPath;
// The this pointer points to the CExplorerView class which extends the CView class.
// CMFCShellListCtrl m_wndList
if (m_wndList.GetCurrentFolder(strPath) &&
    theApp.GetShellManager()->BrowseForFolder(strPath,
                                              this, strPath, _T("Copy the selected item(s) to the folder:")))
{
   MessageBox(CString(_T("The selected path is: ")) + strPath);
}

CShellManager::ConcatenateItem

Создает новый список, содержащий два ПИН-кода.

LPITEMIDLIST ConcatenateItem(
    LPCITEMIDLIST pidl1,
    LPCITEMIDLIST pidl2);

Параметры

pidl1
[in] Первый элемент.

pidl2
[in] Второй элемент.

Возвращаемое значение

Указатель на новый список элементов, если функция выполнена успешно, в противном случае — ЗНАЧЕНИЕ NULL.

Замечания

Этот метод создает новый itemIDLIST достаточно большой, чтобы содержать как pidl1, так и pidl2. Затем он копирует pidl1 и pidl2 в новый список.

CShellManager::CopyItem

Копирует список элементов.

LPITEMIDLIST CopyItem(LPCITEMIDLIST pidlSource);

Параметры

pidlSource
[in] Исходный список элементов.

Возвращаемое значение

Указатель на только что созданный список элементов в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

Замечания

Созданный список элементов имеет тот же размер, что и список исходных элементов.

CShellManager::CreateItem

Создает новый PIDL.

LPITEMIDLIST CreateItem(UINT cbSize);

Параметры

cbSize
[in] Размер списка элементов.

Возвращаемое значение

Указатель на созданный список элементов в случае успешного выполнения; в противном случае ЗНАЧЕНИЕ NULL.

CShellManager::CShellManager

Формирует объект CShellManager.

CShellManager();

Замечания

В большинстве случаев вам не нужно создавать напрямую CShellManager . По умолчанию платформа создает ее для вас. Чтобы получить указатель на CShellManagerобъект , вызовите CWinAppEx::GetShellManager. При создании CShellManager вручную его необходимо инициализировать с помощью метода CWinAppEx::InitShellManager.

CShellManager::FreeItem

Удаляет список элементов.

void FreeItem(LPITEMIDLIST pidl);

Параметры

pidl
[in] Список элементов для удаления.

CShellManager::GetItemCount

Возвращает количество элементов в списке элементов.

UINT GetItemCount(LPCITEMIDLIST pidl);

Параметры

pidl
[in] Указатель на список элементов.

Возвращаемое значение

Количество элементов в списке элементов.

CShellManager::GetItemSize

Возвращает размер списка элементов.

UINT GetItemSize(LPCITEMIDLIST pidl);

Параметры

pidl
[in] Указатель на список элементов.

Возвращаемое значение

Размер списка элементов.

CShellManager::GetNextItem

Извлекает следующий элемент из указателя на список идентификаторов элементов (PIDL).

LPITEMIDLIST GetNextItem(LPCITEMIDLIST pidl);

Параметры

pidl
[in] Список элементов для итерации.

Возвращаемое значение

Указатель на следующий элемент в списке.

Замечания

Если в списке больше нет элементов, этот метод возвращает значение NULL.

CShellManager::GetParentItem

Извлекает родительский элемент указателя на список идентификаторов элементов (PIDL).

int GetParentItem(
    LPCITEMIDLIST lpidl,
    LPITEMIDLIST& lpidlParent);

Параметры

lpidl
[in] PIDL, родительский объект которого будет получен.

lpidlParent
[out] Ссылка на PIDL, в которой метод будет хранить результат.

Возвращаемое значение

Уровень родительского PIDL.

Замечания

Уровень PIDL относительно рабочего стола. PiDL для настольных компьютеров считается уровнем 0.

CShellManager::ItemFromPath

Извлекает указатель на список идентификаторов элементов (PIDL) из элемента, определяемого строковым путем.

HRESULT ItemFromPath(
    LPCTSTR lpszPath,
    LPITEMIDLIST& pidl);

Параметры

lpszPath
[in] Строка, указывающая путь для элемента.

pidl
[out] Ссылка на PIDL. Метод использует этот PIDL для хранения указателя на возвращаемое значение.

Возвращаемое значение

Возвращает NOERROR в случае успешного выполнения; значение ошибки, определяемое OLE.

См. также

Диаграмма иерархии
Классы