Поделиться через


Интерфейс 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
Дополнительные сведения см. в разделе IExplorerPaneVisibility::GetPaneState .

Клиенты объекта 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)