步驟 1:建立 Windows Framework
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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 會保存點陣圖的指標。 應用程式會使用 new
在pbmi中配置緩衝區,因此它必須先刪除緩衝區,才能終結視窗。
pBuffer指標會計算為pbmi的位移,因此不需要刪除它。
相關主題