Compartir a través de


Interfaz IAMCopyCaptureFileProgress (strmif.h)

[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio y vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Captura de audio y vídeo en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.

La IAMCopyCaptureFileProgress interfaz es una interfaz de devolución de llamada usada por el método ICaptureGraphBuilder2::CopyCaptureFile .

Dado que el método CopyCaptureFile puede tardar mucho tiempo en completarse, una aplicación puede implementar esta interfaz para recibir notificaciones periódicas sobre el progreso de la operación de copia. Si la aplicación no necesita recibir esta información, no es necesario implementar la interfaz.

Herencia

La interfaz IAMCopyCaptureFileProgress hereda de la interfaz IUnknown . IAMCopyCaptureFileProgress también tiene estos tipos de miembros:

Métodos

La interfaz IAMCopyCaptureFileProgress tiene estos métodos.

 
IAMCopyCaptureFileProgress::P rogress

El método Progress lo llama periódicamente el método ICaptureGraphBuilder2::CopyCaptureFile mientras copia el archivo.

Observaciones

Para usar esta interfaz, implemente una clase que herede la interfaz e implemente todos sus métodos, incluidos los métodos de IUnknown. En la aplicación, cree una instancia de la clase y pásela al método CopyCaptureFile . No es necesario implementar el recuento de referencias COM en la clase, siempre que se garantice que el objeto no se elimine antes de que se devuelva el método CopyCaptureFile .

En el ejemplo siguiente se muestra una clase que implementa la interfaz :

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;
    };
};
En el ejemplo siguiente se usa esta clase en el método CopyCaptureFile :
C++
// Scope for CProgress object
{
    CProgress Prog;
    // Assume pBuilder is an initialized ICaptureGraphBuilder2 pointer.
    hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE,
        static_cast<IAMCopyCaptureFileProgress*>(&Prog));
}

Requisitos

Requisito Valor
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
Header strmif.h (include Dshow.h)

Consulte también

Interfaces