Etapa 3. Suporte a QueryInterface
[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]
Para expor as novas interfaces do filtro aos clientes, faça o seguinte:
Inclua a macro DECLARE_IUNKNOWN na seção declaração pública do filtro:
public: DECLARE_IUNKNOWN;
Substitua CUnknown::NonDelegatingQueryInterface para marcar para os IIDs das duas interfaces:
STDMETHODIMP CGrayFilter::NonDelegatingQueryInterface(REFIID riid, void **ppv) { if (riid == IID_ISpecifyPropertyPages) { return GetInterface( static_cast<ISpecifyPropertyPages*>(this), ppv); } else if (riid == IID_ISaturation) { return GetInterface(static_cast<ISaturation*>(this), ppv); } else { // Call the parent class. return CBaseFilter::NonDelegatingQueryInterface(riid, ppv); // NOTE: This example assumes that the filter inherits directly // from CBaseFilter. If your filter inherits from another class, // call the NonDelegatingQueryInterface method of that class. } }
Próximo: Etapa 4. Crie a página de propriedades.
Tópicos relacionados