Compartilhar via


Interface IAMCopyCaptureFileProgress (strmif.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

A IAMCopyCaptureFileProgress interface é uma interface de retorno de chamada usada pelo método ICaptureGraphBuilder2::CopyCaptureFile .

Como o método CopyCaptureFile pode levar muito tempo para ser concluído, um aplicativo pode implementar essa interface para receber notificações periódicas sobre o progresso da operação de cópia. Se o aplicativo não precisar receber essas informações, não será necessário implementar a interface.

Herança

A interface IAMCopyCaptureFileProgress herda da interface IUnknown . IAMCopyCaptureFileProgress também tem estes tipos de membros:

Métodos

A interface IAMCopyCaptureFileProgress tem esses métodos.

 
IAMCopyCaptureFileProgress::P rogress

O método Progress é chamado periodicamente pelo método ICaptureGraphBuilder2::CopyCaptureFile enquanto copia o arquivo.

Comentários

Para usar essa interface, implemente uma classe que herda a interface e implemente todos os seus métodos, incluindo os métodos em IUnknown. Em seu aplicativo, crie uma instância da classe e passe-a para o método CopyCaptureFile . Você não precisa implementar a contagem de referência COM em sua classe, desde que o objeto seja garantido para não ser excluído antes que o método CopyCaptureFile retorne.

O exemplo a seguir mostra uma classe que implementa a interface :

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;
    };
};
O exemplo a seguir usa essa classe no 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 com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)

Confira também

Interfaces