Etapa 1: Criar a Estrutura do Windows
[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.]
[Essa API não tem suporte e pode ser alterada ou indisponível no futuro.]
Comece criando a estrutura básica de um aplicativo do Windows, incluindo WinMain e um procedimento de janela. A função WinMain não é mostrada aqui; chame CoInitialize antes do loop de mensagem para inicializar a biblioteca COM e CoUninitialize após a saída do loop de mensagem. Comece com o seguinte procedimento mínimo de janela:
LRESULT CALLBACK MainWndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
static BITMAPINFOHEADER *pbmi = NULL;
static BYTE *pBuffer = NULL;
switch (msg)
{
case WM_CLOSE:
DestroyWindow(hwnd);
break;
case WM_DESTROY:
if (pbmi) delete [] pbmi;
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, msg, wparam, lparam);
}
return 0;
}
Quando você recupera um quadro de pôster do Detector de Mídia, ele retorna um buffer que contém uma estrutura BITMAPINFOHEADER seguida pelos bits de imagem. Portanto, defina duas variáveis estáticas no procedimento de janela: pbmi manterá um ponteiro para a estrutura BITMAPINFOHEADER e pBuffer manterá um ponteiro para o bitmap. O aplicativo alocará o buffer no pbmi usando new
, portanto, ele deve excluir o buffer antes que a janela seja destruída. O ponteiro pBuffer é calculado como um deslocamento do pbmi, portanto, não é necessário excluí-lo.
Próximo: Etapa 2: Adicionar um comando de menu para pegar um quadro de pôster
Tópicos relacionados