📄 cgraphbuildercb.cpp
字号:
//
// CGraphBuilderCB.cpp
//
#include "stdafx.h"
#include <streams.h>
#include "CGraphBuilderCB.h"
#include "CSupported.h"
//////////////////////////////////////////////////////////////////////////////
CGraphBuilderCB::CGraphBuilderCB() :
CUnknown(NAME("Callbacker"), NULL)
{
mSupported = new CSupported();
}
CGraphBuilderCB::~CGraphBuilderCB()
{
if (mSupported)
{
delete mSupported;
mSupported = NULL;
}
}
STDMETHODIMP CGraphBuilderCB::NonDelegatingQueryInterface(REFIID riid, void** ppv)
{
if (riid == __uuidof(IAMGraphBuilderCallback))
{
return GetInterface((IAMGraphBuilderCallback*)this, ppv);
}
return CUnknown::NonDelegatingQueryInterface(riid,ppv);
}
//////////////////////////////////////////////////////////////////////////////
//
// IAMGraphBuilderCallback-overriden functions
//////////////////////////////////////////////////////////////////////////////
//----------------------------------------------------------------------------
// SelectedFilter
//
//----------------------------------------------------------------------------
STDMETHODIMP CGraphBuilderCB::SelectedFilter(IMoniker *pMon)
{
if (!pMon)
{
return E_POINTER;
}
IBindCtx * pBCtx = NULL;
HRESULT hr = CreateBindCtx(0, (LPBC*)&pBCtx );
if (!pBCtx || FAILED(hr))
{
return E_UNEXPECTED;
}
IBaseFilter * pBf = NULL;
hr = pMon->BindToObject(pBCtx, NULL, __uuidof(IBaseFilter), (void**)&pBf);
pBCtx->Release();
if (FAILED(hr) || !pBf)
{
return E_UNEXPECTED;
}
// Get filter's CLSID
IPersist * pPersist = NULL;
hr = pBf->QueryInterface( __uuidof(IPersist), (void**)&pPersist);
pBf->Release();
if (SUCCEEDED(hr))
{
CLSID clsid = GUID_NULL;
pPersist->GetClassID(&clsid);
pPersist->Release();
if (CSupported::IsGUIDSupported(clsid))
{
return S_OK;
}
}
return E_FAIL;
}
//----------------------------------------------------------------------------
// CreatedFilter
//
//----------------------------------------------------------------------------
STDMETHODIMP CGraphBuilderCB::CreatedFilter(IBaseFilter *pBf)
{
return S_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -