次の方法で共有


手順 2. フィルタ クラスの宣言

初めに、基底クラスを継承する C++ クラスを宣言する。

class CRleFilter : public CTransformFilter
{
    /* ここに宣言が入る。 */
};

各フィルタ クラスには関連するピン クラスがある。フィルタ固有のニーズに従い、場合によっては、ピン クラスのオーバーライドが必要になる。CTransformFilter の場合、ピンはほとんどの作業をフィルタに委任するため、ピンのオーバーライドは必要ないことが多い。

フィルタに対して一意の CLSID を生成する必要がある。Guidgen または Uuidgen ユーティリティを使える。既存の GUID はコピーしないこと。CLSID を宣言するには、いくつかの方法がある。次の例では DEFINE_GUID マクロを使っている。

[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"

次に、フィルタのコンストラクタ メソッドを書き込む。

CRleFilter::CRleFilter()
  : CTransformFilter(NAME("My RLE Encoder"), 0, CLSID_RLEFilter)
{ 
   /* ここでプライベート変数を初期化する。 */
}

CTransformFilter コンストラクタのパラメータの 1 つは、前に定義した CLSID である点に注意すること。