步骤 1:创建 Windows 框架

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

[此 API 不受支持,将来可能会更改或不可用。]

首先创建 Windows 应用程序的基本框架,包括 WinMain 和窗口过程。 此处未显示 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;
}

从媒体检测器检索海报帧时,它将返回一个缓冲区,其中包含 BITMAPINFOHEADER 结构,后跟图像位。 因此,请在窗口过程中定义两个静态变量: pbmi 将保存指向 BITMAPINFOHEADER 结构的指针, pBuffer 将保存指向位图的指针。 应用程序将使用 在 pbminew中分配缓冲区,因此它必须在销毁窗口之前删除缓冲区。 pBuffer 指针计算为与 pbmi 的偏移量,因此无需删除它。

下一 步:步骤 2:添加菜单命令以抓取海报框架

抓取海报框架