다음을 통해 공유


개체 포인터 만들기

[이 페이지와 연결된 기능인 사용자 지정 파일 및 스트림 처리기는 레거시 기능입니다. 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;