Langkah 3. Dukungan QueryInterface
[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]
Untuk mengekspos antarmuka baru filter ke klien, lakukan hal berikut:
Sertakan makro DECLARE_IUNKNOWN di bagian deklarasi publik filter Anda:
public: DECLARE_IUNKNOWN;
Ambil alih CUnknown::NonDelegatingQueryInterface untuk memeriksa IID dari dua antarmuka:
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. } }
Berikutnya: Langkah 4. Buat Halaman Properti.
Topik terkait