次の方法で共有


VFW キャプチャ ダイアログ ボックスの表示

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

Video for Windows (VFW) ドライバーを引き続き使用するキャプチャ デバイスでは、次の 3 つのダイアログ ボックスのいずれかをサポートできます。このダイアログ ボックスは、デバイスの構成に使用されます。

ダイアログ ボックス 説明
ビデオ ソース ビデオ入力を選択し、画像の明るさやコントラストなどのデバイス設定を調整するために使用されます。
ビデオ形式 画像の寸法とビット深度を選択するために使用します。
ビデオディスプレイ レンダリングされるビデオの外観を制御するために使用されます。

 

これらのダイアログ ボックスのいずれかを表示するには、次の操作を行います。

  1. フィルター グラフを停止します。
  2. IAMVfwCaptureDialogs インターフェイスのキャプチャ フィルターに対してクエリを実行します。 QueryInterface が成功した場合は、キャプチャ デバイスが VFW デバイスであることを意味します。
  3. 表示するダイアログ ボックスがドライバーでサポートされている場合は、IAMVfwCaptureDialogs::HasDialog を呼び出してチェックします。 VfwCaptureDialogs 列挙は、各 VFW ダイアログ ボックスのフラグを定義します。 HasDialog は、ダイアログ ボックスがサポートされている場合にS_OKを返します。 それ以外の場合S_FALSEを返すので、SUCCEEDED マクロを使用するのではなく、値のチェックを直接S_OKします。
  4. ダイアログ ボックスがサポートされている場合は、 IAMVfwCaptureDialogs::ShowDialog を呼び出してダイアログ ボックスを表示します。
  5. グラフを再起動します。

次のコードは、[ビデオ ソース] ダイアログ ボックスの次の手順を示しています。

pControl->Stop(); // Stop the graph.

// Query the capture filter for the IAMVfwCaptureDialogs interface.
IAMVfwCaptureDialogs *pVfw = 0;
hr = pCap->QueryInterface(IID_IAMVfwCaptureDialogs, (void**)&pVfw);
if (SUCCEEDED(hr))
{
    // Check if the device supports this dialog box.
    if (S_OK == pVfw->HasDialog(VfwCaptureDialog_Source))
    {
        // Show the dialog box.
        hr = pVfw->ShowDialog(VfwCaptureDialog_Source, hwndParent);
    }
}
pControl->Run();

ビデオ キャプチャ デバイスの構成