Partager via


Interface IAMCopyCaptureFileProgress (strmif.h)

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngineet audio/vidéo capture dans Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et capture audio/vidéo dans Media Foundation au lieu de directShow, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

L’interface IAMCopyCaptureFileProgress est une interface de rappel utilisée par la méthode ICaptureGraphBuilder2 ::CopyCaptureFile.

Étant donné que la méthode CopyCaptureFile peut prendre beaucoup de temps, une application peut implémenter cette interface pour recevoir des notifications périodiques sur la progression de l’opération de copie. Si l’application n’a pas besoin de recevoir ces informations, il n’est pas nécessaire d’implémenter l’interface.

Héritage

L’interface IAMCopyCaptureFileProgress hérite de l’interface IUnknown. IAMCopyCaptureFileProgress possède également ces types de membres :

Méthode

L’interface IAMCopyCaptureFileProgress a ces méthodes.

 
IAMCopyCaptureFileProgress ::P rogress

La méthode Progress est appelée régulièrement par la méthode ICaptureGraphBuilder2 ::CopyCaptureFile pendant qu’elle copie le fichier.

Remarques

Pour utiliser cette interface, implémentez une classe qui hérite de l’interface et implémente toutes ses méthodes, y compris les méthodes de IUnknown. Dans votre application, créez une instance de la classe et transmettez-la à la méthode CopyCaptureFile. Vous n’avez pas besoin d’implémenter le comptage de référence COM dans votre classe, tant que l’objet n’est pas garanti de ne pas être supprimé avant que la méthode CopyCaptureFile retourne.

L’exemple suivant montre une classe qui implémente l’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;
    };
};
L’exemple suivant utilise cette classe dans la méthode CopyCaptureFile :
C++
Scope for CProgress object { CProgress Prog ; // Assume pBuilder est un pointeur ICaptureGraphBuilder2 initialisé.
    hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE, static_cast 

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
d’en-tête strmif.h (include Dshow.h)

Voir aussi

interfaces