次の方法で共有


新しいフィルタ グラフの作成とフィルタの追加

次の例は、コードの一部分であり、新しい (空の) フィルタ グラフ オブジェクトを作成する方法を示している。

    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 オブジェクトを取得した後、次の手順に従ってフィルタを追加する。

  1. 登録済みフィルタの一覧を取得するために、FilgraphManager.RegFilterCollection プロパティを取得する。
  2. コレクションで目的のフィルタを検索する。コレクション内の各要素は IRegFilterInfo オブジェクトである。
  3. フィルタ グラフにフィルタを追加するために、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