IAMCopyCaptureFileProgress 介面 (strmif.h)
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
IAMCopyCaptureFileProgress
介面是 ICaptureGraphBuilder2::CopyCaptureFile 方法所使用的回呼介面。
由於 CopyCaptureFile 方法可能需要很長的時間才能完成,因此應用程式可以實作此介面,以接收有關複製作業進度的定期通知。 如果應用程式不需要接收這項資訊,就不需要實作 介面。
遺產
IAMCopyCaptureFileProgress 介面繼承自 IUnknown 介面。
IAMCopyCaptureFileProgress 也有下列類型的成員:
方法
IAMCopyCaptureFileProgress 介面具有這些方法。
若要使用此介面,請實作繼承 介面並實作其所有方法的類別,包括 IUnknown中的 方法。 在您的應用程式中,建立 類別的實例,並將它傳遞給 CopyCaptureFile 方法。 您不需要在類別中實作 COM 參考計數,只要在傳回 CopyCaptureFile 方法之前,保證不會刪除物件。
下列範例示範實作 介面的類別:
C++ |
class CProgress : public IAMCopyCaptureFileProgress
{
public:
STDMETHODIMP_(ULONG) AddRef() { return 1; }
STDMETHODIMP_(ULONG) Release() { return 0; }
STDMETHODIMP QueryInterface(REFIID iid, void **ppv)
{
if (ppv == NULL)
{
return E_POINTER;
}
else if (iid == __uuidof(IUnknown))
{
*ppv = static_cast<IUnknown*>(this);
}
else if (iid == IID_IAMCopyCaptureFileProgress)
{
*ppv = static_cast<IAMCopyCaptureFileProgress*>(this);
}
else
{
return E_NOINTERFACE;
}
return S_OK;
}
STDMETHODIMP Progress(int iPercent)
{
if (iPercent < 0 || iPercent > 100)
{
return E_INVALIDARG;
}
TCHAR szMsg[32];
StringCchPrintf(szMsg, 32, TEXT("Progress: %d%%"), iPercent);
// Assume g_hwndStatus is a valid HWND.
SetWindowText(g_hwndStatus, szMsg);
return S_OK;
};
};
|
下列範例會在
CopyCaptureFile 方法中使用這個類別:
C++ |
CProgress 物件的範圍 { CProgress Prog; -- 假設 pBuilder 是初始化的 ICaptureGraphBuilder2 指標。
hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE, static_cast要求
要求 |
價值 |
最低支援的用戶端 |
Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 |
Windows 2000 Server [僅限傳統型應用程式] |
目標平臺 |
窗戶 |
標頭 |
strmif.h (包括 Dshow.h) |
另請參閱
介面
|