Control de notificaciones de eventos de DVD
[La característica asociada a esta página, DirectShow, es una característica heredada. Se ha reemplazado por MediaPlayer, IMFMediaEngine y Captura de audio/vídeo en Media Foundation. Esas características se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer, IMFMediaEngine y Audio/Video Capture en Media Foundation en lugar de DirectShow, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
El navegador de DVD envía notificaciones a una ventana especificada por la aplicación cuando se producen determinados eventos, como cuando cambia el dominio de DVD, cuando se encuentra un nuevo nivel de administración parental y cuando el navegador de DVD está a punto de entrar en un bloque angular. Los parámetros de evento pueden contener información adicional relacionada con el evento. Los mensajes de error y las advertencias también se envían de esta manera. La aplicación especifica la ventana que controlará las notificaciones de eventos mediante el puntero IMediaEventEx para llamar a SetNotifyWindow, como se indica a continuación:
const DWORD WM_DVD_EVENT = WM_USER + 100;
hr = m_pIME->SetNotifyWindow(reinterpret_cast<OAHWND>(m_hWnd), WM_DVD_EVENT, 0);
En el ejemplo anterior, m_hWnd es el HWND de la ventana para recibir los mensajes y WM_DVD_EVENT es el mensaje definido por la aplicación (mayor que WM_USER) que indicará que se ha producido un evento de DVD. La aplicación recupera el evento a través de una llamada a IMediaEvent::GetEvent. Dado que más de un evento puede estar en la cola de eventos en un momento dado, la aplicación debe llamar a GetEvent dentro de un bucle que se repita hasta que se hayan recuperado todos los eventos en cola, como se muestra en el ejemplo de código siguiente.
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
}
Los eventos de DVD pueden contener información adicional en los parámetros lParam1 o lParam2 , como se muestra anteriormente, donde la hora actual está contenida en lParam1. El ejemplo de código anterior procede de la aplicación de ejemplo de DVD en Dvdcore.cpp. Para obtener una lista completa de todos los eventos de DVD y sus parámetros, consulte Códigos de notificación de eventos de DVD.
Temas relacionados