DirectX--Filter属性页的调用

IEnumFilters* pEnum;
HRESULT hr ;
if (pigb)
{
hr = pigb-> EnumFilters(&pEnum);
if (FAILED(hr)) 
{
return ;
}

     

IBaseFilter* pFilter = NULL;
while (pEnum->Next(1, &pFilter, NULL) == S_OK) 
{
// Check for required interface
IUnknown* pUnk;//查找Filter接口,只有一个?
HRESULT hrQuery = pFilter->QueryInterface(IID_IVideoWindow, (void**)&pUnk);
if (SUCCEEDED(hrQuery)) 
{
pUnk->Release();
pEnum->Release();
break ;
}
// pFilter->Release();
}
 //  pEnum->Release();
//
ISpecifyPropertyPages *pProp = NULL;//查询接口
hr = pFilter->QueryInterface(IID_ISpecifyPropertyPages, (void **)&pProp);
if (SUCCEEDED(hr)) 
{
// Get the filter's name and IUnknown pointer.
FILTER_INFO FilterInfo;
hr = pFilter->QueryFilterInfo(&FilterInfo); 
IUnknown *pFilterUnk;
pFilter->QueryInterface(IID_IUnknown, (void **)&pFilterUnk);
//
CString str(FilterInfo.achName);//显示Filter名称
MessageBox(str);

// Show the page. 
CAUUID caGUID;

pProp->GetPages(&caGUID);
pProp->Release();
OleCreatePropertyFrame(
this->GetSafeHwnd(),                   // Parent window
0, 0,                                 // Reserved
FilterInfo.achName,     //L"MAOMAO" // Caption for the dialog box 
1,                      // Number of objects (just the filter)
&pFilterUnk,            // Array of object pointers. 
caGUID.cElems,          // Number of property pages
caGUID.pElems,          // Array of property page CLSIDs
0,                      // Locale identifier
0, NULL                 // Reserved
);

// Clean up.
pFilterUnk->Release();
FilterInfo.pGraph->Release(); 
CoTaskMemFree(caGUID.pElems);
}
}

时间: 2024-08-03 23:29:00

DirectX--Filter属性页的调用的相关文章

如何创建Filter的属性页

本篇文档我们将要讲述如何给一个filter创建一个属性页,通过CBasePropertyPage基类.这篇文档的实例代码演 示了创建属性页的步骤,这里我们假设我们要创建属性页的视频filter支持饱和度属性页,这个属性页有一个滑动条,用户可以通过这个滑动条来控制饱和 度.第一步,设置属性的机理Filter必须支持一种和属性页沟通的方式,通过属性页可以设置或者获取filter的属性,下面是可能的三种方式1暴露一个接口2通过IDispatch支持自动化属性3暴露IPropertyBag 接口,并定义

directshow filter中添加属性页

directShow 属性页的制作,为CBall filter加了一个属性页 具体为分以下步骤: 1.在要显示属性的类中继承现ISpecifyPropertyPages类,并实现此类的GetPages()函数. 如下所示:HRESULT STDMETHODCALLTYPE CBouncingBall::GetPages(CAUUID *pPages){  if (pPages == NULL) return E_POINTER;  pPages->cElems = 1;  pPages->pE

MFC程序员WTL指南(9)属性页与向导

介绍 甚至在成为Windows 95的通用控件之前,使用属性表来表示一些选项就已经成为一种很流行的方式.向导模式的属性表通常用来引导用户安装软件或完成其他复杂的工作.WTL对这两种方式的属性表都提供了很好的支持,可以使用前面介绍的与对话框相关的特性,如DDX和DDV.在本章我将演示如何创建一个基本的属性表和向导,如何处理属性页发送的通知消息和事件. WTL 的属性表类 实现一个属性表需要CPropertySheetWindow和CPropertySheetImpl两个类联合使用,它们都定义在at

MFC ActiveX 控件:序列化(msdn)和属性页

本文讨论序列化 ActiveX 控件的方法.序列化是从持久性存储媒体(如磁盘文件)中读取或向其中写入的进程.Microsoft 基础类 (MFC) 库在 CObject 类中为序列化提供内置支持.COleControl 通过使用属性交换机制,将此支持扩展到 ActiveX 控件. 通过重写 COleControl::DoPropExchange 实现 ActiveX 控件的序列化.在加载和保存控件对象期间调用此函数,以存储用成员变量或用带更改通知的成员变量实现的所有属性.用户可以对控件进行序列化

VC++在对话框中加入属性页

当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置.本文针对这种方法来讨论几种可能实现的方案. 方案一本方案的例子请见源代码打包文件中的Property1部分 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab Control控件创建一个控件变量,该变量是CTabCtrl类的,再为其他控件也创建相应的控件类. 在主对话框的初始函数中CPropert

vs2008的问题-我照着网上的编的可是都是错误??VS2008 mfc创建属性页????能

问题描述 我照着网上的编的可是都是错误??VS2008 mfc创建属性页????能 还有向导对话框???怎么做? 我的程序z1z12z2都是新建类 void C向导对话框View::On1212() { // TODO: 在此添加命令处理程序代码 z12 a12(_T("aa")); z1 a1; z2 a2; a12.AddPage(&a1); a12.AddPage(&a2); a12.DoModal(); } 网上教程 第一步:新建一个单文档的工程: 第二步:在资

积累的VC编程小技巧之属性页

1.属性页的添加: 创建对话框的类,该类要从CpropertyPage继承:然后在要添加该对话框为属性页的类(头文件)里创建CpropertySheet类的一个对象m_tabsheet和新创建的对话框类的对象m_skatch:最后,在.cpp文件里的OnInitDialog()之类的函数里实现如下代码: m_tabsheet.Create(this, WS_CHILD | WS_VISIBLE, 0);    //使选项卡的按钮在下面    if(m_tabsheet.m_hWnd)    m_

在VC对话框中加入属性页

当一个基于对话框的程序中有相当多的控件时,你一定会想到使用属性页来将这些控件分类放置.本文针对这种方法来讨论几种可能实现的方案. 方案一 本方案的例子请见源代码打包文件中的Property1部分 在对话框上放置一个Tab Control的控件,再在对话框上放置所需的控件(本例放置了2个按钮,试图在每个标签中显示一个).然后利用Class Wizard来为Tab Control控件创建一个控件变量,该变量是CTabCtrl类的,再为其他控件也创建相应的控件类. 在主对话框的初始函数中CProper

c++-请教用程序实现,某个网卡的本地连接属性页中ipv6协议勾选或者不勾选的方法。

问题描述 请教用程序实现,某个网卡的本地连接属性页中ipv6协议勾选或者不勾选的方法. 在win7下,主要是不想启用ipv6协议. C#,C++都可以,dos命令也成.通过修改注册表也行,最好有例子程序.