Menangani Pemberitahuan Peristiwa DVD

[Fitur yang terkait dengan halaman ini, DirectShow, adalah fitur warisan. Ini telah digantikan oleh MediaPlayer, IMFMediaEngine, dan Tangkapan Audio/Video di Media Foundation. Fitur-fitur tersebut telah dioptimalkan untuk Windows 10 dan Windows 11. Microsoft sangat menyarankan agar kode baru menggunakan MediaPlayer, IMFMediaEngine dan Audio/Video Capture di Media Foundation alih-alih DirectShow, jika memungkinkan. Microsoft menyarankan agar kode yang ada yang menggunakan API warisan ditulis ulang untuk menggunakan API baru jika memungkinkan.]

Navigator DVD mengirimkan pemberitahuan ke jendela yang ditentukan aplikasi ketika peristiwa tertentu terjadi, seperti ketika domain DVD berubah, ketika tingkat manajemen orang tua baru ditemui, dan ketika DVD Navigator akan memasuki blok sudut. Parameter peristiwa dapat berisi informasi tambahan yang terkait dengan peristiwa tersebut. Pesan kesalahan dan peringatan juga dikirim dengan cara ini. Aplikasi menentukan jendela yang akan menangani pemberitahuan peristiwa dengan menggunakan pointer IMediaEventEx untuk memanggil SetNotifyWindow, sebagai berikut:

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

Dalam contoh sebelumnya, m_hWnd adalah HWND jendela untuk menerima pesan dan WM_DVD_EVENT adalah pesan yang ditentukan aplikasi (lebih besar dari WM_USER) yang akan menandakan bahwa peristiwa DVD telah terjadi. Peristiwa itu sendiri diambil oleh aplikasi melalui panggilan ke IMediaEvent::GetEvent. Karena lebih dari satu peristiwa mungkin berada dalam antrean peristiwa pada waktu tertentu, aplikasi harus memanggil GetEvent dalam perulangan yang berulang sampai semua peristiwa antrean telah diambil, seperti yang ditunjukkan dalam contoh kode berikut.

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
}

Peristiwa DVD mungkin berisi informasi tambahan dalam parameter lParam1 atau lParam2 , seperti yang diilustrasikan di atas di mana waktu saat ini terkandung dalam lParam1. Contoh kode sebelumnya berasal dari aplikasi sampel DVD di Dvdcore.cpp. Untuk daftar lengkap semua peristiwa DVD dan parameternya, lihat Kode Pemberitahuan Peristiwa DVD.

Aplikasi DVD