Share via


Gestion des notifications d’événements DVD

[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 au nouveau code d’utiliser MediaPlayer, IMFMediaEngine et La capture audio/vidéo dans Media Foundation au lieu de DirectShow, lorsque cela est 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.]

Le NAVIGATEUR DE DVD envoie des notifications à une fenêtre spécifiée par l’application lorsque certains événements se produisent, par exemple lorsque le domaine DU DVD change, lorsqu’un nouveau niveau de gestion parentale est rencontré et lorsque le NAVIGATEUR DE DVD est sur le point d’entrer un bloc d’angle. Les paramètres d’événement peuvent contenir des informations supplémentaires relatives à l’événement. Les messages d’erreur et les avertissements sont également envoyés de cette manière. L’application spécifie la fenêtre qui gérera les notifications d’événements à l’aide du pointeur IMediaEventEx pour appeler SetNotifyWindow, comme suit :

const DWORD WM_DVD_EVENT = WM_USER + 100;
hr = m_pIME->SetNotifyWindow(reinterpret_cast<OAHWND>(m_hWnd), WM_DVD_EVENT, 0);

Dans l’exemple précédent, m_hWnd est le HWND de la fenêtre pour recevoir les messages et WM_DVD_EVENT est le message défini par l’application (supérieur à WM_USER) qui signale qu’un événement DVD a eu lieu. L’événement lui-même est récupéré par l’application via un appel à IMediaEvent::GetEvent. Étant donné que plusieurs événements peuvent se trouver dans la file d’attente d’événements à un moment donné, l’application doit appeler GetEvent dans une boucle qui se répète jusqu’à ce que tous les événements mis en file d’attente aient été récupérés, comme illustré dans l’exemple de code suivant.

while (SUCCEEDED(m_pIME->GetEvent(&lEvent, &lParam1, &lParam2, lTimeOut)))
{
    HRESULT hr;
    switch (lEvent)
    {

    case EC_DVD_CURRENT_HMSF_TIME:
        {
            DVD_HMSF_TIMECODE *pTC = reinterpret_cast<DVD_HMSF_TIMECODE *>(&lParam1);
            m_CurTime = *pTC;
            ...
        }
        break;
        ...
    } // switch
}

Les événements DVD peuvent contenir des informations supplémentaires dans les paramètres lParam1 ou lParam2 , comme illustré ci-dessus où l’heure actuelle est contenue dans lParam1. L’exemple de code précédent provient de l’exemple d’application DVD dans Dvdcore.cpp. Pour obtenir la liste complète de tous les événements DVD et de leurs paramètres, consultez Codes de notification des événements DVD.

DVD Applications