Freigeben über


Schritt 1: Erstellen des Windows-Frameworks

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

[Diese API wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]

Erstellen Sie zunächst das grundlegende Framework einer Windows-Anwendung, einschließlich WinMain und einer Fensterprozedur. Die WinMain-Funktion wird hier nicht angezeigt. rufen Sie CoInitialize vor der Nachrichtenschleife auf, um die COM-Bibliothek zu initialisieren, und CoUninitialize , nachdem die Nachrichtenschleife beendet wurde. Beginnen Sie mit dem folgenden minimalen Fensterverfahren:

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;
}

Wenn Sie einen Posterframe aus der Medienerkennung abrufen, wird ein Puffer zurückgegeben, der eine BITMAPINFOHEADER-Struktur gefolgt von den Bildbits enthält. Definieren Sie daher zwei statische Variablen in der Fensterprozedur: pbmi enthält einen Zeiger auf die BITMAPINFOHEADER-Struktur und pBuffer einen Zeiger auf die Bitmap. Die Anwendung ordnet den Puffer in pbmi mithilfe von newzu, sodass sie den Puffer löschen muss, bevor das Fenster zerstört wird. Der pBuffer-Zeiger wird als Offset von pbmi berechnet, sodass er nicht gelöscht werden muss.

Weiter: Schritt 2: Hinzufügen eines Menübefehls zum Greifen eines Posterrahmens

Greifen eines Posterrahmens