DirectShow中Filter的属性
柯本 2002-08-28 02:42:54
请看以下程序:
IGraphBuilder* m_IGraphBuilder;
HRESULT hr;
CAUUID cauuid;
IBaseFilter *pcb;
ISpecifyPropertyPages *pSpec;
hr = CoCreateInstance (CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (void **) &m_IGraphBuilder);
if (FAILED(hr))
ShowMessage(TEXT("建m_IGraphBuilder失败"));
if(!AddFilter2(CLSID_VideoRenderer, "Video Renderer")) //我自编的
{
ShowMessage("Add Video Renderer Error!");
return false;
}
m_IGraphBuilder->FindFilterByName(L"Video Renderer",&pcb);
hr = pcb->QueryInterface(IID_ISpecifyPropertyPages, (void **)&pSpec);
if (hr == S_OK) {
hr = pSpec->GetPages(&cauuid);
hr = OleCreatePropertyFrame(NULL, 30, 30, NULL, 1, (IUnknown **)&pcb, cauuid.cElems,
(GUID *)cauuid.pElems, 0, 0, NULL);
CoTaskMemFree(cauuid.pElems);
pSpec->Release();
}
pcb->Release();
...
它每次都要用一DIALOG, 能否不用OleCreatePropertyFrame直接改Filter的属性