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:
- Pare o grafo de filtro.
- Consulte o filtro de captura para a interface IAMVfwCaptureDialogs . Se QueryInterface for bem-sucedido, isso significa que o dispositivo de captura é um dispositivo VFW.
- 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.
- Se houver suporte para a caixa de diálogo, chame IAMVfwCaptureDialogs::ShowDialog para exibir a caixa de diálogo.
- 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();
Tópicos relacionados