Класс CBasePropertyPage
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Класс 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. Производный класс должен переопределить некоторые или все из этих виртуальных методов. Дополнительные сведения см. в примечаниях для отдельных методов.
Расширенный пример использования этого класса для создания страницы свойств см. в разделе Создание страницы свойств фильтра.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|