Класс 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.
Иерархия наследования
Требования
Заголовок: 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.