Condividi tramite


Interfaccia IAMCopyCaptureFileProgress (strmif.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEnginee Acquisizione audio/video in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente di usare un nuovo codice MediaPlayer, IMFMediaEngine e Acquisizione audio/video in Media Foundation anziché DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

L'interfaccia IAMCopyCaptureFileProgress è un'interfaccia di callback usata dal metodo ICaptureGraphBuilder2::CopyCaptureFile.

Poiché il metodo CopyCaptureFile può richiedere molto tempo, un'applicazione può implementare questa interfaccia per ricevere notifiche periodiche sullo stato di avanzamento dell'operazione di copia. Se l'applicazione non deve ricevere queste informazioni, non è necessario implementare l'interfaccia .

Eredità

L'interfaccia IAMCopyCaptureFileProgress eredita dall'interfaccia IUnknown . IAMCopyCaptureFileProgress include anche questi tipi di membri:

Metodi

L'interfaccia IAMCopyCaptureFileProgress dispone di questi metodi.

 
IAMCopyCaptureFileProgress::P rogress

Il metodo Progress viene chiamato periodicamente dal metodo ICaptureGraphBuilder2::CopyCaptureFile mentre copia il file.

Osservazioni

Per usare questa interfaccia, implementare una classe che eredita l'interfaccia e implementa tutti i relativi metodi, inclusi i metodi in IUnknown. Nell'applicazione creare un'istanza della classe e passarla al metodo CopyCaptureFile. Non è necessario implementare il conteggio dei riferimenti COM nella classe, purché l'oggetto non venga eliminato prima che venga restituito il metodo CopyCaptureFile .

L'esempio seguente illustra una classe che implementa l'interfaccia :

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;
    };
};
L'esempio seguente usa questa classe nel metodo CopyCaptureFile:
C++
Ambito per l'oggetto CProgress { CProgress Prog; // Si supponga che pBuilder sia un puntatore ICaptureGraphBuilder2 inizializzato.
    hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE, static_cast 

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione strmif.h (include Dshow.h)

Vedere anche

interfacce