次の方法で共有


Visual Basic フォームでのビデオ コントロールのホスティング

このトピックは Windows XP にのみ適用。

ここでは、Visual Basic で局をチューニングするためのビデオ コントロールの使い方について説明する。最初にプロジェクトを作成し、次の参照を追加する。

  • MS ビデオ コントロール 1.0 タイプ ライブラリ
  • Microsoft チューナー 1.0 タイプ ライブラリ

また、ビデオ コントロール タイプ ライブラリをコンポーネントとして追加する。フォーム上にビデオ コントロールを描画し、名前を付ける (たとえば VidControl)。チャンネルをチューニングするには、次のように行う。

  1. チューニング要求を ITuneRequest インターフェイスとして取得する。このインターフェイスは複数のネットワーク タイプにわたってポリモーフィズムを提供する。ネットワークによって、基盤となるオブジェクトは IATSCChannelTuneRequest オブジェクトか IDVBTuneRequest オブジェクト、またはその他のオブジェクトになる。
  2. チューニング要求を引数にしてビデオ コントロールの View メソッドを呼び出す。
  3. ビデオ コントロールの Run メソッドを呼び出す。

ステップ 1 では、あらかじめ構成されたチューニング要求をデータベースから取得することが望ましい。そうすれば、アプリケーションはネットワーク タイプに関係する詳細を処理する必要がない。ただし、サポートする対象の特定のネットワーク タイプがわかっている場合は、チューニング要求を最初から新規に作成することができる。以下のようにすること。

  1. SystemTuningSpaces コレクションを作成する。
  2. コレクション内のいずれかのチューニング空間に対して ITuningSpace.CreateTuneRequest を呼び出し、新しいチューニング要求を作成する。
  3. ATSC および DVB 用のチューニングの場合、ロケータ オブジェクトを作成し、それをチューニング要求の ITuneRequest.Locator プロパティに割り当てる。
  4. チューニング要求およびロケータに適切なプロパティを設定する。適切なプロパティはネットワーク タイプによって異なる。

たとえば、次の手順はフォームがロードされたときに ATSC チャンネル 46 用にチューニングする。

Private Sub Form_Load()
    Dim objTSContainer As New SystemTuningSpaces
    Dim objTuneRequest As IATSCChannelTuneRequest
    Dim objLocator As New ATSCLocator

    Set objTuneRequest = objTSContainer("ATSC").CreateTuneRequest
    objLocator.PhysicalChannel = 46
    objTuneRequest.Locator = objLocator

    VidControl.View objTuneRequest
    VidControl.Run
End Sub

上の例では、SystemTuningSpaces コレクション内のチューニング空間を一意の名前 (この例では "ATSC") で指定している。For...Each ループを使ってコレクションを順番に見ていくこともできる。たとえば、次のコードでは、すべての使用可能なチューニング空間の名前をリスト ボックスに表示している。

For Each tunespace In objTSContainer
    TuneName = tunespace.UniqueName + " (" + tunespace.FriendlyName + ")"
    List1.AddItem TuneName
Next

アナログ ケーブルの場合はロケータ オブジェクトは必要ない。次の例では、NTSC アナログ ケーブルのチャンネル 6 用にチューニングしている。

Dim objTSContainer As New SystemTuningSpaces
Dim objTuneRequest As IChannelTuneRequest

Set objTuneRequest = objTSContainer("Cable").CreateTuneRequest
objTuneRequest.Channel = 6

VidControl.View objTuneRequest
VidControl.Run

これらの例に示すように、アプリケーションでチューニング要求を作成するときは、特定のネットワーク タイプをターゲットにしなければならない。アプリケーションが常にあらかじめ構成したチューニング要求をデータベースから取得するのであれば、そのアプリケーションはサポートされている任意のネットワーク タイプに使える。

同じネットワーク タイプの中でチャンネルを変更するには、MSVidCtl.View を呼び出してビデオ コントロールに別のチューニング要求を送信すればよい。