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

Exigences

Exigence Valeur
Client minimum requis Windows 2000 Professionnel [applications de bureau uniquement]
serveur minimum pris en charge Windows 2000 Server [applications de bureau uniquement]
plateforme cible Windows
Header strmif.h (include Dshow.h)

Voir aussi

Interfaces