Интерфейс IExplorerBrowser (shobjidl_core.h)
IExplorerBrowser — это объект браузера, который может либо перемещаться, либо размещать представление объекта данных. Как полнофункциональный объект браузера, он также поддерживает журнал автоматического перемещения.
Оболочка предоставляет реализацию IExplorerBrowser по умолчанию в качестве CLSID_ExplorerBrowser. Как правило, разработчику не нужно предоставлять пользовательскую реализацию этого интерфейса.
Пакет средств разработки программного обеспечения (SDK) для Windows содержит полные примеры, демонстрирующие использование IExplorerBrowser и взаимодействие с ним. Скачайте пример поиска в браузере Обозреватель и пример пользовательского содержимого браузера Обозреватель.
Наследование
Интерфейс IExplorerBrowser наследуется от интерфейса IUnknown . IExplorerBrowser также имеет следующие типы элементов:
Методы
Интерфейс IExplorerBrowser содержит следующие методы.
IExplorerBrowser::Advise Инициирует соединение с IExplorerBrowser для обратных вызовов событий. |
IExplorerBrowser::BrowseToIDList Поиск указателя на список идентификаторов элементов (PIDL) |
IExplorerBrowser::BrowseToObject Переход к объекту . |
IExplorerBrowser::D etraits Уничтожает браузер. |
IExplorerBrowser::FillFromObject Создает папку результатов и заполняет ее элементами. |
IExplorerBrowser::GetCurrentView Возвращает интерфейс для текущего представления браузера. |
IExplorerBrowser::GetOptions Возвращает текущие параметры браузера. |
IExplorerBrowser::Initialize Подготавливает браузер к переходу. |
IExplorerBrowser::RemoveAll Удаляет все элементы из папки результатов. |
IExplorerBrowser::SetEmptyText Задает пустой текст по умолчанию. |
IExplorerBrowser::SetFolderSettings Задает параметры папки для текущего представления. |
IExplorerBrowser::SetOptions Задает текущие параметры браузера. |
IExplorerBrowser::SetPropertyBag Задает имя контейнера свойств. |
IExplorerBrowser::SetRect Задает размер и положение окон представления, созданных браузером. |
IExplorerBrowser::Unadvise Завершает соединение с рекомендациями. (IExplorerBrowser.Unadvise) |
Комментарии
Пример кода, демонстрирующего типичное использование IExplorerBrowser и его методов, см. в примерах пользовательского содержимого браузера Обозреватель и пользовательского содержимого браузера Обозреватель.
После вызова метода Initialize этого объекта необходимо вызвать его метод Destroy , чтобы освободить все оконные ресурсы, созданные при вызове метода Initialize.
Объект, в котором размещен объект ExplorerBrowser, должен быть производным от IServiceProvider и реализовывать QueryService для ответа на любые запросы службы. Например, количество панелей, отображаемых браузером, можно контролировать путем реализации IExplorerPaneVisibility и ответа на любые запросы SID_ExplorerPaneVisibility службы.
Кадры отключены по умолчанию. Чтобы включить кадры и получить набор панелей по умолчанию, установите флаг EBO_SHOWFRAMES с помощью метода IExplorerBrowser::SetOptions . Области по умолчанию, перечисленные как константы IExplorerPaneVisibility , являются следующими:
- EP_NavPane
- EP_Commands
- EP_Commands_Organize
- EP_Commands_View
- EP_DetailsPane
- EP_PreviewPane
- EP_QueryPane
- EP_AdvQueryPane
- EP_StatusBar
- EP_Ribbon
Клиенты объекта ExplorerBrowser могут реализовать интерфейсы ICommDlgBrowser, ICommDlgBrowser2 или ICommDlgBrowser3 и отвечать на запрос службы SID_SExplorerBrowserFrame в своих реализациях QueryService, которые вызываются при вызове любых интерфейсов ICommDlgBrowser в браузере (обычно вызывается из представления в результате действий пользователя). Обратите внимание, что клиент не получает вызов ICommDlgBrowser::IncludeObject , если фильтр папок был задан в браузере путем вызова IFolderFilterSite::SetFilter.
Чтобы обеспечить совместимость с некоторыми старыми приложениями, представление оболочки по умолчанию (DefView) выполняет операции фильтрации (например, операции поиска, выполняемые папкой поиска) в потоке пользовательского интерфейса. Для новых приложений это обычно нежелательно; поиск должен выполняться в фоновом потоке. Чтобы остановить фильтрацию потока пользовательского интерфейса и вместо этого выполнить фильтрацию в фоновом потоке, предоставьте ICommDlgBrowser2 с помощью запроса SID_SExplorerBrowserFrame службы. При вызове метода ICommDlgBrowser2::GetViewFlags он должен вернуть CDB2GVF_NOINCLUDEITEM. Например, если вы перейдете к папке поиска в ExplorerBrowser и не возвращаете CDB2GVF_NOINCLUDEITEM, представление может перестать отвечать на запросы до завершения всего поиска.
Архитектура оболочки состоит из трех main компонентов: браузера, представлений и источников данных (например, IShellFolder). Объект ExplorerBrowser поддерживает текущее расположение и навигацию по другим расположениям в пространстве имен оболочки. Он также ведет журнал путешествий (журнал вперед и назад). Браузер получает уведомление о событиях в представлении; например, когда пользователь дважды щелкает папку. В ответ браузер переходит в это расположение. Источники данных — это объекты, предоставляющие элементы и папки в пространстве имен. Они также содержат сведения о расположении, такие как свойства элементов и то, что нужно добавить в контекстное меню, когда представление запрашивает его. Кроме того, источники данных знают, какое представление должно быть создано для представления их элементов в расположении. Почти во всех случаях папки создают представление оболочки по умолчанию (DefView). Таким образом, по мере перехода браузер получает объект IShellFolder для нового расположения и запрашивает у него создаваемое представление. Затем браузер создает это представление и делает его видимым, скрывая и уничтожая представление, в котором отображалось предыдущее расположение. Представление отвечает за обмен данными с IShellFolder для текущего расположения и запрос на перечисление элементов, что позволяет представлению отображать эти элементы для пользователя. Когда пользователь взаимодействует с элементами, представление взаимодействует с IShellFolder , чтобы получить все необходимые дополнительные сведения, такие как определенные свойства элементов или записи контекстного меню для элемента.
Если приложение использует реализацию по умолчанию, предоставляемую CLSID_ExplorerBrowser, вставляя его в окно приложения, а затем переходя к расположению, ExplorerBrowser создает правильный IShellView , указанный в расположении, в котором оно просматривается. Затем приложение может попросить ExplorerBrowser предоставить ему интерфейс в текущем представлении, что позволит приложению управлять представлением напрямую при необходимости. Реализация объекта представления Обозреватель Windows по умолчанию, созданного shCreateShellFolderViewEx, поддерживает интерфейс IShellView. Вы можете убедиться, что у вас есть объект представления папки оболочки по умолчанию, вызвав метод IExplorerBrowser::GetCurrentView , а затем вызвав QueryInterface для возвращаемого объекта с помощью идентификатора интерфейса IID_CDefView.
Windows 7 и более поздние версии. CExplorerBrowser может поддерживать навигацию на месте с помощью IServiceProvider::QueryService с идентификатором службы SID_SlnPlaceBrowser. При использовании SID_SInPlaceBrowser состояние CExplorerBrowser не может быть задано как EBO_NAVIGATEONCE.
Требования
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Целевая платформа | Windows |
Header | shobjidl_core.h (включая Shobjidl.h) |