IMFPMediaPlayerCallback::OnMediaPlayerEvent-Methode (mfplay.h)

Wichtig Veraltet. Diese API kann aus zukünftigen Versionen von Windows entfernt werden. Anwendungen sollten die Mediensitzung für die Wiedergabe verwenden.
 

Wird vom MFPlay-Playerobjekt aufgerufen, um die Anwendung über ein Wiedergabeereignis zu benachrichtigen.

Syntax

void OnMediaPlayerEvent(
  [in] MFP_EVENT_HEADER *pEventHeader
);

Parameter

[in] pEventHeader

Zeiger auf eine MFP_EVENT_HEADER Struktur, die Informationen zum Ereignis enthält.

Rückgabewert

Keine

Bemerkungen

Der spezifische Typ des Wiedergabeereignisses wird im eEventType-Element der MFP_EVENT_HEADER-Struktur angegeben. Diese Struktur enthält Informationen, die allen Ereignistypen gemeinsam sind. Einige Ereignistypen verwenden erweiterte Strukturen. Eine Gruppe von Makros wird definiert, um den pEventHeader-Zeiger in den richtigen Strukturtyp zu umwandeln. Weitere Informationen finden Sie unter MFP_EVENT_TYPE.

Es ist sicher, die Methoden IMFPMediaPlayer und IMFPMediaItem innerhalb der OnMediaPlayer-Methode aufzurufen. MFPlay gibt die OnMediaPlayer-Methode garantiert nicht erneut ein. Das heißt, Aufrufe von OnMediaPlayer werden serialisiert, und die -Methode wird nicht erneut in OnMediaPlayer aufgerufen.

Beispiele

Der folgende Code zeigt, wie Sie den pEventHeader-Parameter in den richtigen Strukturtyp umwandeln und den Strukturzeiger an eine Handlerfunktion übergeben. Die Handlerfunktionen werden am Anfang des Beispiels deklariert. Die Anwendung müsste Implementierungen für diese Funktionen bereitstellen. Beachten Sie, dass Sie nicht jedes Ereignis behandeln müssen. Wenn Ihre Anwendung beispielsweise nie IMFPMediaPlayer::SetRate aufruft, müssen Sie das MFP_EVENT_TYPE_RATE_SET-Ereignis nicht verarbeiten. In diesem Fall lassen Sie einfach MFP_EVENT_TYPE_RATE_SET aus der switch-Anweisung aus.

// Declarations of MFPlay event handler functions.

void OnPlay(MFP_PLAY_EVENT *pEvent);
void OnPause(MFP_PAUSE_EVENT *pEvent);
void OnStop(MFP_STOP_EVENT *pEvent);
void OnPositionSet(MFP_POSITION_SET_EVENT *pEvent);
void OnRateSet(MFP_RATE_SET_EVENT *pEvent);
void OnMediaItemCreated(MFP_MEDIAITEM_CREATED_EVENT *pEvent);
void OnMediaItemSet(MFP_MEDIAITEM_SET_EVENT *pEvent);
void OnFrameStep(MFP_FRAME_STEP_EVENT *pEvent);
void OnMediaItemCleared(MFP_MEDIAITEM_CLEARED_EVENT *pEvent);
void OnMFEvent(MFP_MF_EVENT *pEvent); 
void OnError(MFP_ERROR_EVENT *pEvent);
void OnPlaybackEnded(MFP_PLAYBACK_ENDED_EVENT *pEvent);
void OnAquireUserCredential(MFP_ACQUIRE_USER_CREDENTIAL_EVENT *pEvent);

// Implementation of IMFPMediaPlayerCallback::OnMediaPlayerEvent
void STDMETHODCALLTYPE PlayerCallback::OnMediaPlayerEvent(MFP_EVENT_HEADER * pEventHeader)
{
    switch (pEventHeader->eEventType)
    {
    case MFP_EVENT_TYPE_PLAY: 
        OnPlay(MFP_GET_PLAY_EVENT(pEventHeader));
        break;

    case MFP_EVENT_TYPE_PAUSE: 
        OnPause(MFP_GET_PAUSE_EVENT(pEventHeader));
        break;

    case MFP_EVENT_TYPE_STOP: 
        OnStop(MFP_GET_STOP_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_POSITION_SET: 
        OnPositionSet(MFP_GET_POSITION_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_RATE_SET: 
        OnRateSet(MFP_GET_RATE_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_CREATED: 
        OnMediaItemCreated(MFP_GET_MEDIAITEM_CREATED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_SET: 
        OnMediaItemSet(MFP_GET_MEDIAITEM_SET_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_FRAME_STEP: 
        OnFrameStep(MFP_GET_FRAME_STEP_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MEDIAITEM_CLEARED: 
        OnMediaItemCleared(MFP_GET_MEDIAITEM_CLEARED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_MF: 
        OnMFEvent(MFP_GET_MF_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_ERROR: 
        OnError(MFP_GET_ERROR_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_PLAYBACK_ENDED: 
        OnPlaybackEnded(MFP_GET_PLAYBACK_ENDED_EVENT(pEventHeader)); 
        break;

    case MFP_EVENT_TYPE_ACQUIRE_USER_CREDENTIAL: 
        OnAquireUserCredential(MFP_GET_ACQUIRE_USER_CREDENTIAL_EVENT(pEventHeader)); 
        break;
    }
}

Anforderungen

   
Unterstützte Mindestversion (Client) Windows 7 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 R2 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile mfplay.h

Weitere Informationen

IMFPMediaPlayerCallback

Verwenden von MFPlay für die Audio-/Videowiedergabe