次の方法で共有


手順 1: Windows Framework を作成する

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

[この API はサポートされていないため、今後変更または使用できない可能性があります。]

まず、WinMain やウィンドウ プロシージャなど、Windows アプリケーションの基本的なフレームワークを作成します。 WinMain 関数はここには表示されません。メッセージ ループの前に CoInitialize を呼び出して COM ライブラリを初期化し、メッセージ ループが終了した後に CoUninitialize を呼び出します。 次の最小ウィンドウ プロシージャから開始します。

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

Media Detector からポスター フレームを取得すると、 BITMAPINFOHEADER 構造体とそれに続くイメージ ビットを含むバッファーが返されます。 したがって、ウィンドウ プロシージャで 2 つの静的変数を定義します。 pbmiBITMAPINFOHEADER 構造体へのポインターを保持し、 pBuffer はビットマップへのポインターを保持します。 アプリケーションは を使用して pbmi にバッファーを new割り当てます。そのため、ウィンドウが破棄される前にバッファーを削除する必要があります。 pBuffer ポインターは pbmi からのオフセットとして計算されるため、削除する必要はありません。

次へ: 手順 2: メニュー コマンドを追加してポスター フレームを取得する

ポスターフレームのつかみ取り