Schritt 2: Deklarieren der Filterklasse
Dies ist Schritt 2 des Tutorials Schreiben von Transformationsfiltern.
Deklarieren Sie zunächst eine C++-Klasse, die die Basisklasse erbt:
class CRleFilter : public CTransformFilter
{
/* Declarations will go here. */
};
Jeder Filterklasse sind Pin-Klassen zugeordnet. Abhängig von den spezifischen Anforderungen Ihres Filters müssen Sie möglicherweise die Pinklassen überschreiben. Im Fall von CTransformFilter delegieren die Pins den Großteil ihrer Arbeit an den Filter, sodass Sie die Pins wahrscheinlich nicht überschreiben müssen.
Sie müssen eine eindeutige CLSID für den Filter generieren. Sie können das Hilfsprogramm Guidgen oder Uuidgen verwenden. Kopieren Sie niemals eine vorhandene GUID. Es gibt mehrere Möglichkeiten, eine CLSID zu deklarieren. Im folgenden Beispiel wird das _ DEFINE GUID-Makro verwendet:
[RleFilt.h]
// {1915C5C7-02AA-415f-890F-76D94C85AAF1}
DEFINE_GUID(CLSID_RLEFilter,
0x1915c5c7, 0x2aa, 0x415f, 0x89, 0xf, 0x76, 0xd9, 0x4c, 0x85, 0xaa, 0xf1);
[RleFilt.cpp]
#include <initguid.h>
#include "RleFilt.h"
Schreiben Sie als Nächstes eine Konstruktormethode für den Filter:
CRleFilter::CRleFilter()
: CTransformFilter(NAME("My RLE Encoder"), 0, CLSID_RLEFilter)
{
/* Initialize any private variables here. */
}
Beachten Sie, dass einer der Parameter für den CTransformFilter-Konstruktor die zuvor definierte CLSID ist.
Weiter: Schritt 3. Unterstützung der Medientypaushandlung.