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:
- Beenden Sie das Filterdiagramm.
- 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.
- 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.
- Wenn das Dialogfeld unterstützt wird, rufen Sie IAMVfwCaptureDialogs::ShowDialog auf, um das Dialogfeld anzuzeigen.
- 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();
Zugehörige Themen