Freigeben über


Anzeigen von VFW-Erfassungsdialogfeldern

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Ein Aufnahmegerät, das weiterhin einen VfW-Treiber (Video for Windows) verwendet, kann jedes der folgenden drei Dialogfelder unterstützen, die zum Konfigurieren des Geräts verwendet werden.

Dialogfeld BESCHREIBUNG
Videoquelle Wird verwendet, um die Videoeingabe auszuwählen und Geräteeinstellungen wie Bildhelligkeit oder Kontrast anzupassen.
Videoformat Wird verwendet, um die Bildabmessungen und die Bittiefe auszuwählen.
Videoanzeige Wird verwendet, um die Darstellung des gerenderten Videos zu steuern.

 

Gehen Sie wie folgt vor, um eines dieser Dialogfelder anzuzeigen:

  1. Beenden Sie das Filterdiagramm.
  2. Fragen Sie den Erfassungsfilter für die IAMVfwCaptureDialogs-Schnittstelle ab. Wenn QueryInterface erfolgreich ist, bedeutet dies, dass das Erfassungsgerät ein VFW-Gerät ist.
  3. Rufen Sie IAMVfwCaptureDialogs::HasDialog auf, um zu überprüfen, ob der Treiber das anzuzeigende Dialogfeld unterstützt. Die VfwCaptureDialogs-Enumeration definiert Flags für die einzelnen VFW-Dialogfelder. HasDialog gibt S_OK zurück, wenn das Dialogfeld unterstützt wird. Andernfalls wird S_FALSE zurückgegeben. Überprüfen Sie daher direkt, ob der Wert S_OK, anstatt das MAKRO SUCCEEDED zu verwenden.
  4. Wenn das Dialogfeld unterstützt wird, rufen Sie IAMVfwCaptureDialogs::ShowDialog auf, um das Dialogfeld anzuzeigen.
  5. Starten Sie das Diagramm neu.

Der folgende Code zeigt die folgenden Schritte für das Dialogfeld Videoquelle:

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();

Konfigurieren eines Videoaufnahmegeräts