CBasePropertyPage 类
[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 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 对象,因此必须为 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 和 COM 和 INonDelegatingUnknown。
接下来,将对话创建为项目中的资源,并创建包含对话框标题的字符串资源。 这两个资源 ID 都是 CBasePropertyPage 构造函数的参数。 将标题字符串保留在资源中可以更轻松地本地化属性页。
CBasePropertyPage 类为 IPropertyPage 接口提供框架。 此框架调用许多虚拟方法,包括 CBasePropertyPage::OnActivate、 CBasePropertyPage::OnApplyChanges 等。 在基类中,这些方法仅返回S_OK。 派生类需要重写这些虚拟方法中的部分或全部。 有关详细信息,请参阅各个方法的备注。
有关如何使用此类创建属性页的扩展示例,请参阅 创建筛选器属性页。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|