Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека классов Microsoft Foundation (MFC) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Реализует несколько методов, которые позволяют работать с указателями в списках идентификаторов (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.