Etapa 4: Desenhar o Bitmap na Área do Cliente

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 Audio/Video Capture in 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.]

[Não há suporte para essa API e pode ser alterada ou indisponível no futuro.]

Este tópico é a Etapa 4 de Como pegar um quadro de pôster.

A etapa final é desenhar o bitmap na área do cliente da janela do aplicativo, usando a função SetDIBitsToDevice . Este exemplo simplesmente pinta o bitmap no canto superior esquerdo da área do cliente, sem considerar o tamanho da janela:

case WM_PAINT:
    {
        PAINTSTRUCT ps;
        HDC hdc = BeginPaint(hwnd, &ps);
        if (pbmi)
        {
            int result = SetDIBitsToDevice(hdc, 0, 0, 
                pbmi->biWidth,
                pbmi->biHeight,
                0, 0, 0,
                pbmi->biHeight,
                pBuffer,
                reinterpret_cast<BITMAPINFO*>(pbmi),
                DIB_RGB_COLORS);
        }
        EndPaint(hwnd, &ps);
    }
    break;

As variáveis pBuffer e pbmi são declaradas na Etapa 1: Criar a Estrutura do Windows e seus valores são obtidos na Etapa 3: Implementar a função Frame-Grabbing.

Pegando um quadro de pôster