CBasePropertyPage 类

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 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 对象,因此必须为 CLSID) (类标识符生成 GUID,并在 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 和 COMINonDelegatingUnknown

接下来,将对话创建为项目中的资源,并创建包含对话框标题的字符串资源。 这两个资源 ID 都是 CBasePropertyPage 构造函数的参数。 将标题字符串保留在资源中可以更轻松地本地化属性页。

CBasePropertyPage 类为 IPropertyPage 接口提供框架。 此框架调用许多虚拟方法,包括 CBasePropertyPage::OnActivateCBasePropertyPage::OnApplyChanges 等。 在基类中,这些方法仅返回S_OK。 派生类需要重写这些虚拟方法中的部分或全部。 有关详细信息,请参阅各个方法的备注。

有关如何使用此类创建属性页的扩展示例,请参阅 创建筛选器属性页

要求

要求
标头
Cprop.h (包括 Streams.h)

Strmbase.lib (零售版本) ;
Strmbasd.lib (调试生成)