Bagikan melalui


Langkah 2. Menerapkan ISpecifyPropertyPages

[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.]

Selanjutnya, terapkan antarmuka ISpecifyPropertyPages di filter Anda. Antarmuka ini memiliki satu metode, GetPages, yang mengembalikan array CLSID untuk halaman properti yang didukung filter. Dalam contoh ini, filter memiliki satu halaman properti. Mulailah dengan membuat CLSID dan mendeklarasikannya dalam file header Anda:

// Always create new GUIDs! Never copy a GUID from an example.
DEFINE_GUID(CLSID_SaturationProp, 0xa9bd4eb, 0xded5, 
0x4df0, 0xba, 0xf6, 0x2c, 0xea, 0x23, 0xf5, 0x72, 0x61);

Sekarang terapkan metode GetPages :

class CGrayFilter : public ISaturation,
                    public ISpecifyPropertyPages, 
                    /* Other inherited classes. */
{
public:
    STDMETHODIMP GetPages(CAUUID *pPages)
    {
        if (pPages == NULL) return E_POINTER;
        pPages->cElems = 1;
        pPages->pElems = (GUID*)CoTaskMemAlloc(sizeof(GUID));
        if (pPages->pElems == NULL) 
        {
            return E_OUTOFMEMORY;
        }
        pPages->pElems[0] = CLSID_SaturationProp;
        return S_OK;
    }
};

/* ... */

}

Alokasikan memori untuk array menggunakan CoTaskMemAlloc. Pemanggil akan melepaskan memori.

Berikutnya: Langkah 3. Mendukung QueryInterface.

Membuat Halaman Properti Filter