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, IMFMediaEngine et Audio/Video Capture in 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 Audio/Video Capture dans Media Foundation au lieu de DirectShow, si 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 a également les types de membres suivants :

Méthodes

L’interface IAMCopyCaptureFileProgress utilise 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 dans IUnknown. Dans votre application, créez un instance de la classe et passez-le à la méthode CopyCaptureFile. Vous n’avez pas besoin d’implémenter le comptage de références COM dans votre classe, à condition que l’objet ne soit pas supprimé avant le retour de la méthode CopyCaptureFile .

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 is an initialized ICaptureGraphBuilder2 pointer.
    hr = pBuilder->CopyCaptureFile(szCaptureFile, szDestFile, TRUE,
        static_cast<IAMCopyCaptureFileProgress*>(&Prog));
}

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)

Voir aussi

Interfaces