Création d’un pointeur d’objet
[La fonctionnalité associée à cette page, Gestionnaires de fichiers personnalisés et de flux, est une fonctionnalité héritée. Il a été remplacé par la classe MediaStreamSource. La classe MediaStreamSource a été optimisée pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise la classe MediaStreamSource au lieu des gestionnaires de fichiers personnalisés et de flux, dans la mesure du 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.]
AVIBall utilise la structure suivante comme pointeur d’objet. Le premier membre de cette structure pointe vers la table de fonctions virtuelles qu’AVIBall utilise pour accéder à ses fonctions. Les applications peuvent caster cette structure en type de données PAVISTREAM. Les méthodes qui utilisent le type de données PAVISTREAM utilisent uniquement le pointeur vers la table de fonctions virtuelles. Les membres qui suivent le pointeur vers la table de fonctions virtuelles sont utilisés en interne par AVIBall.
typedef struct
{
IAVIStreamVtbl FAR * lpvtbl;
// Ball instance data.
ULONG ulRefCount;
DWORD fccType; // is this audio/video?
int width; // size, in pixels, of each frame
int height;
int length; // length, in frames
int size;
COLORREF color; // ball color
} AVIBALL, FAR * PAVIBALL;