개체 포인터 만들기
[이 페이지와 연결된 기능인 사용자 지정 파일 및 스트림 처리기는 레거시 기능입니다. MediaStreamSource 클래스로 대체되었습니다. MediaStreamSource 클래스는 Windows 10 및 Windows 11 최적화되었습니다. 가능한 경우 새 코드에서 사용자 지정 파일 및 스트림 처리기 대신 MediaStreamSource 클래스를 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]
AVIBall은 다음 구조를 개체 포인터로 사용합니다. 이 구조체의 첫 번째 멤버는 AVIBall이 함수에 액세스하는 데 사용하는 가상 함수 테이블을 가리킵니다. 애플리케이션은 이 구조를 PAVISTREAM 데이터 형식으로 캐스팅할 수 있습니다. PAVISTREAM 데이터 형식을 사용하는 메서드는 가상 함수 테이블에 대한 포인터만 사용합니다. 가상 함수 테이블에 대한 포인터 다음에 있는 멤버는 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;