IAMCopyCaptureFileProgress 接口 (strmif.h)
本文内容
[与此页面关联的功能(DirectShow )是一项旧功能。 它已被 MediaPlayer 、IMFMediaEngine 取代,并在媒体基金会音频/视频捕获。 这些功能已针对 Windows 10 和 Windows 11 进行了优化。 Microsoft强烈建议新代码尽可能使用 MediaPlayer 、IMFMediaEngine 和 Media Foundation 中的音频/视频捕获,而不是 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)
另请参阅
接口