Visual Basic フォームでのビデオ コントロールのホスティング
このトピックは Windows XP にのみ適用。
ここでは、Visual Basic で局をチューニングするためのビデオ コントロールの使い方について説明する。最初にプロジェクトを作成し、次の参照を追加する。
- MS ビデオ コントロール 1.0 タイプ ライブラリ
- Microsoft チューナー 1.0 タイプ ライブラリ
また、ビデオ コントロール タイプ ライブラリをコンポーネントとして追加する。フォーム上にビデオ コントロールを描画し、名前を付ける (たとえば VidControl)。チャンネルをチューニングするには、次のように行う。
- チューニング要求を ITuneRequest インターフェイスとして取得する。このインターフェイスは複数のネットワーク タイプにわたってポリモーフィズムを提供する。ネットワークによって、基盤となるオブジェクトは IATSCChannelTuneRequest オブジェクトか IDVBTuneRequest オブジェクト、またはその他のオブジェクトになる。
- チューニング要求を引数にしてビデオ コントロールの View メソッドを呼び出す。
- ビデオ コントロールの Run メソッドを呼び出す。
ステップ 1 では、あらかじめ構成されたチューニング要求をデータベースから取得することが望ましい。そうすれば、アプリケーションはネットワーク タイプに関係する詳細を処理する必要がない。ただし、サポートする対象の特定のネットワーク タイプがわかっている場合は、チューニング要求を最初から新規に作成することができる。以下のようにすること。
- SystemTuningSpaces コレクションを作成する。
- コレクション内のいずれかのチューニング空間に対して ITuningSpace.CreateTuneRequest を呼び出し、新しいチューニング要求を作成する。
- ATSC および DVB 用のチューニングの場合、ロケータ オブジェクトを作成し、それをチューニング要求の ITuneRequest.Locator プロパティに割り当てる。
- チューニング要求およびロケータに適切なプロパティを設定する。適切なプロパティはネットワーク タイプによって異なる。
たとえば、次の手順はフォームがロードされたときに 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 を呼び出してビデオ コントロールに別のチューニング要求を送信すればよい。