CBasePropertyPage 类

cbasepropertypage class hierarchy

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

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

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

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

要求

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

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