Класс CBasePropertyPage

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]

Иерархия классов cbasepropertypage

Класс CBasePropertyPage является абстрактным классом для реализации страницы свойств. Используйте этот класс, если вы пишете фильтр (или другой объект), поддерживающий страницы свойств.

Защищенные переменные-члены Описание
m_bDirty Указывает, были ли изменены какие-либо свойства.
m_DialogId Идентификатор ресурса для диалогового окна.
m_Dlg Дескриптор в диалоговом окне.
m_hwnd Дескриптор в диалоговом окне.
m_pPageSite Указатель на интерфейс IPropertyPageSite сайта страницы свойств.
m_TitleId Идентификатор ресурса для строки, содержащей заголовок диалогового окна.
Открытые методы Описание
CBasePropertyPage Метод конструктора.
~CBasePropertyPage Метод деструктора. Виртуальной.
OnActivate Вызывается при активации страницы свойств. Виртуальной.
OnApplyChanges Вызывается, когда пользователь применяет изменения к странице свойств. Виртуальной.
OnConnect Предоставляет указатель IUnknown на объект, связанный со страницей свойств. Виртуальной.
OnDeactivate Вызывается при уничтожении окна диалогового окна. Виртуальной.
OnDisconnect Вызывается, когда страница свойств должна освободить связанный объект. Виртуальной.
OnReceiveMessage Вызывается, когда диалоговое окно получает сообщение. Виртуальной.
Методы IPropertyPage Описание
Активировать Создает диалоговое окно.
Применить Применяет текущие значения страницы свойств к объекту, связанному со страницей свойств
Отключение Удаляет диалоговое окно.
GetPageInfo Извлекает сведения о странице свойств.
Справка Вызывает справку страницы свойств.
IsPageDirty Указывает, изменилась ли страница свойств с момента ее активации или с момента последнего вызова IPropertyPage::Apply.
Переместить Размещает диалоговое окно и изменяет его размер.
SetObjects Предоставляет указатели IUnknown для объектов, связанных со страницей свойств.
SetPageSite Инициализирует страницу свойств.
Показать Отображает или скрывает диалоговое окно.
TranslateAccelerator Указывает странице свойств обработать нажатие клавиши.

Комментарии

Страница свойств — это COM-объект, поэтому необходимо создать GUID для идентификатора класса (CLSID) и указать запись в массиве CFactoryTemplate . Дополнительные сведения см. в разделе DirectShow и COM. В следующем примере показана типичная запись фабрики класса:

CFactoryTemplate g_Templates[] =
{   
    { 
        L"My Property Page",
        &CLSID_MyPropPage,
        CMyProp::CreateInstance,
        NULL,
        NULL
    },
    /* Also include the template for your filter (not shown). */
};

Фильтр должен предоставлять интерфейс ISpecifyPropertyPages . Этот интерфейс содержит один метод GetPages, который возвращает ИДЕНТИФИКАТОР CLSID страницы свойств. В следующем примере показано, как реализовать этот метод:

STDMETHODIMP CMyFilter::GetPages(CAUUID *pPages)
{
    if (!pPages) return E_POINTER;

    pPages->cElems = 1;
    pPages->pElems = reinterpret_cast<GUID*>(CoTaskMemAlloc(sizeof(GUID)));
    if (pPages->pElems == NULL) 
    {
        return E_OUTOFMEMORY;
    }
    *(pPages->pElems) = CLSID_MyPropPage;
    return S_OK;
} 

Не забудьте также переопределить метод NonDelegatingQueryInterface фильтра. Дополнительные сведения см. в разделах DirectShow и COM и INonDelegatingUnknown.

Затем создайте диалоговое окно в качестве ресурса в проекте и строковый ресурс, содержащий заголовок диалога. Оба этих идентификатора ресурсов являются параметрами конструктора CBasePropertyPage . Сохранение строки заголовка в ресурсе упрощает локализацию страницы свойств.

Класс CBasePropertyPage предоставляет платформу для интерфейса IPropertyPage . Эта платформа вызывает ряд виртуальных методов, включая CBasePropertyPage::OnActivate, CBasePropertyPage::OnApplyChanges и т. д. В базовом классе эти методы просто возвращают S_OK. Производный класс должен переопределить некоторые или все из этих виртуальных методов. Дополнительные сведения см. в примечаниях для отдельных методов.

Расширенный пример использования этого класса для создания страницы свойств см. в разделе Создание страницы свойств фильтра.

Требования

Требование Значение
Заголовок
Cprop.h (включая Streams.h)
Библиотека
Strmbase.lib (розничные сборки);
Strmbasd.lib (отладочные сборки)