Visual Basic でのクローズド キャプションの表示
このトピックは Windows XP にのみ適用。
クローズド キャプション (CC) を有効にするには、アプリケーションはクローズド キャプション フィーチャーをアクティブにする必要がある。アナログ TV の場合、アプリケーションはデータ サービス フィーチャーもアクティブにする必要がある。ビデオ コントロールの使用可能なフィーチャーのコレクションからフィーチャーを列挙することによって、フィーチャーを検索できる。フィーチャーをアクティブにするには、フィーチャーをアクティブ フィーチャー コレクションに追加する。
クローズド キャプション フィーチャーをアクティブにするには、以下の手順を実行する。
- 新しい MSVidFeatures コレクションを作成する。
- ビデオ コントロールの MSVidCtl.FeaturesAvailable プロパティから使用可能なフィーチャーを列挙する。
- 各フィーチャーのクラス ID (CLSID) を CC フィーチャーの CLSID と比較する。アナログの場合は、データ サービス フィーチャーの CLSID もチェックする。CLSID が一致した場合は、そのフィーチャーをコレクション オブジェクトに追加する。後で使えるように CC フィーチャーへの参照を変数に格納する。
- ビデオ コントロールの MSVidCtl.FeaturesActive プロパティをコレクション オブジェクトと等しくなるように設定する。
これらのステップは、MSVidCtl.Build または MSVidCtl.Run を呼び出す前に実行すること。CC フィーチャーをアクティブ フィーチャー コレクションに追加した後は、CC フィーチャーの MSVidClosedCaptioning.Enable プロパティを設定していつでもクローズド キャプションを有効または無効にすることができる。デフォルトでは、このフィーチャーは無効になっている。
次のコードは、アナログ TV のクローズド キャプションを有効にする例である。
Const CLSID_CC As String = "{7F9CB14D-48E4-43B6-9346-1AEBC39C64D3}"
Const CLSID_DATASVC As String = "{334125C0-77E5-11D3-B653-00C04F79498E}"
Private mCCFeature as MSVidClosedCaptioning
Dim colFeatures As New MSVidFeatures
Dim objFeature As IMSVidFeature
' CC フィーチャーとデータ サービス フィーチャーを見つけてコレクションに追加する。
For Each objFeature In VidControl.FeaturesAvailable
If objFeature.ClassID = CLSID_CC Then
colFeatures.Add objFeature
Set mCCFeature = objFeature
ElseIf objFeature.ClassID = CLSID_DATASVC Then
colFeatures.Add objFeature
End If
Next
' このコレクションをアクティブなフィーチャー用に使用する。
VidControl1.FeaturesActive = colFeatures
mCCFeature.Enable = True
この例では、CLSID_CC 定数と CLSID_DATASVC 定数にフィーチャーの CLSID が文字列形式で格納されている。アプリケーションはこれらの文字列を IMSVidDevice.ClassID プロパティと照合する。デジタル TV については、IP データを受け取るためにデータ サービス フィーチャーが必要な場合以外は ElseIf 句を省略できる。
CC フィーチャーをアクティブにした後は、CC フィーチャーの MSVidClosedCaptioning.Enable プロパティを True に設定することによりキャプションを表示できる。このプロパティを False に設定すれば、キャプションを再び非表示にできる。