新しいフィルタ グラフの作成とフィルタの追加
次の例は、コードの一部分であり、新しい (空の) フィルタ グラフ オブジェクトを作成する方法を示している。
Dim g_objMC as FilgraphManager
Set g_objMC = New FilgraphManager ' 新しいフィルタ グラフを作成する
空のフィルタ グラフを作成して個々のフィルタを追加する場合は、フィルタ タイプがわかっている必要がある。通常、フィルタには 3 つのカテゴリがある。ソース フィルタ・変換フィルタ・レンダリング フィルタの 3 つである。ソース フィルタを追加する手順では、変換フィルタおよびレンダリング フィルタを追加する手順とは異なるメソッドを使う。
フィルタ グラフにソース フィルタを追加する。そのためには、FilgraphManager.AddSourceFilter メソッドを呼び出し、指定のソース タイプまたは保存されているフィルタ グラフのファイルの名前を指定する。
Dim objFilter As Object ' 有効な構文のための一時的なオブジェクト。使用されない
CommonDialog1.ShowOpen ' ソースまたはフィルタ グラフの名前を取得する
g_objMC.AddSourceFilter CommonDialog1.filename, objFilter
IRegFilterInfo.Filter メソッドを呼び出して、フィルタ グラフに変換フィルタおよびレンダリング フィルタを追加する。IRegFilterInfo オブジェクトは、FilgraphManager.RegFilterCollection プロパティから取得できる。このプロパティは、システムに登録されていて利用可能なフィルタ オブジェクトのコレクションを表す。
フィルタ グラフを作成して FilgraphManager オブジェクトを取得した後、次の手順に従ってフィルタを追加する。
- 登録済みフィルタの一覧を取得するために、FilgraphManager.RegFilterCollection プロパティを取得する。
- コレクションで目的のフィルタを検索する。コレクション内の各要素は IRegFilterInfo オブジェクトである。
- フィルタ グラフにフィルタを追加するために、IRegFilterInfo.Filter メソッドを呼び出す。
次のコードは手順 1 と 2 に対応する。
' 登録済みのフィルタのリスト ボックスを設定するコード
' グローバル変数 g_objRegFilters は FilgraphManager.RegFilterCollection に設定される
Set g_objRegFilters = g_objMC.RegFilterCollection
Dim filter As IRegFilterInfo
listRegFilters.Clear
If Not g_objRegFilters Is Nothing Then
For Each filter In g_objRegFilters ' コレクション内の各フィルタについて
listRegFilters.AddItem filter.Name ' リスト ボックスに名前を追加する
Next filter
End If
次のコードは手順 3 に対応する。
Dim filter As IRegFilterInfo
' 選択したフィルタを検索し、グラフに追加する
' g_objRegFilters は FilgraphManager オブジェクトの RegFilterCollection プロパティである
For Each filter In g_objRegFilters
If filter.Name = listRegFilters.Text Then ' 選択したフィルタか ?
Dim f As IFilterInfo ' はい
filter.filter f ' フィルタ グラフに追加し、IFilterInfo f を返す
If f.IsFileSource Then
CommonDialog1.ShowOpen
f.filename = CommonDialog1.filename
End If
Exit For
End If
Next filter