Condividi tramite


Passaggio 1: Creare Windows Framework

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

[Questa API non è supportata e potrebbe essere modificata o non disponibile in futuro.]

Per iniziare, creare il framework di base di un'applicazione Windows, tra cui WinMain e una procedura di finestra. La funzione WinMain non viene visualizzata qui; chiamare CoInitialize prima del ciclo di messaggi per inizializzare la libreria COM e CoUninitialize dopo l'uscita del ciclo di messaggi. Iniziare con la procedura di finestra minima seguente:

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 si recupera un frame poster da Media Detector, viene restituito un buffer contenente una struttura BITMAPINFOHEADER seguita dai bit dell'immagine. Definire quindi due variabili statiche nella routine finestra: pbmi conterrà un puntatore alla struttura BITMAPINFOHEADER e pBuffer conterrà un puntatore alla bitmap. L'applicazione allocherà il buffer in pbmi usando new, quindi deve eliminare il buffer prima che la finestra venga eliminata definitivamente. Il puntatore pBuffer viene calcolato come offset da pbmi, quindi non è necessario eliminarlo.

Passaggio 2: Aggiungere un comando di menu per afferrare una cornice poster

Afferrare un frame poster