Exibir caixas de diálogo de captura VFW

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Um dispositivo de captura que ainda usa um driver VFW (Vídeo para Windows) pode dar suporte a qualquer uma das três caixas de diálogo a seguir, que são usadas para configurar o dispositivo.

Caixa de diálogo Descrição
Fonte de vídeo Usado para selecionar a entrada de vídeo e ajustar as configurações do dispositivo, como brilho ou contraste da imagem.
Formato de vídeo Usado para selecionar as dimensões da imagem e a profundidade do bit.
Exibição de vídeo Usado para controlar a aparência do vídeo renderizado.

 

Para mostrar uma destas caixas de diálogo, faça o seguinte:

  1. Pare o grafo de filtro.
  2. Consulte o filtro de captura para a interface IAMVfwCaptureDialogs . Se QueryInterface for bem-sucedido, isso significa que o dispositivo de captura é um dispositivo VFW.
  3. Chame IAMVfwCaptureDialogs::HasDialog para marcar se o driver der suporte à caixa de diálogo que você deseja exibir. A enumeração VfwCaptureDialogs define sinalizadores para cada uma das caixas de diálogo VFW. O HasDialog retornará S_OK se a caixa de diálogo tiver suporte. Ele retorna S_FALSE caso contrário, portanto, marcar para o valor S_OK diretamente, em vez de usar a macro SUCCEEDED.
  4. Se houver suporte para a caixa de diálogo, chame IAMVfwCaptureDialogs::ShowDialog para exibir a caixa de diálogo.
  5. Reinicie o grafo.

O código a seguir mostra estas etapas para a caixa de diálogo Fonte de Vídeo:

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

Configurando um dispositivo de captura de vídeo