Compartilhar via


Interface IAMCopyCaptureFileProgress (strmif.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture 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 Audio/Video Capture 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 interface IAMCopyCaptureFileProgress é 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.

Observações

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 não seja 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++
Escopo do objeto CProgress { CProgress Prog; // Suponha que pBuilder seja um ponteiro ICaptureGraphBuilder2 inicializado.
    hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE, static_cast 

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows 2000 Professional [somente aplicativos da área de trabalho]
servidor com suporte mínimo Windows 2000 Server [somente aplicativos da área de trabalho]
da Plataforma de Destino Windows
cabeçalho strmif.h (inclua Dshow.h)

Consulte também

interfaces