Freigeben über


Automatisieren der Wiedergabe für MCIWnd

[Das dieser Seite zugeordnete Feature MCIWnd Window Class ist ein Legacyfeature. Es wurde von MediaPlayer ersetzt. MediaPlayer wurde für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer anstelle der MCIWnd-Fensterklasse verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Sie können die Wiedergabe für MCIWnd automatisieren, indem Sie bestimmte Fensterstile in der MCIWndCreate-Funktion angeben. Um das Gerät wiederzugeben, benötigt das Fenster ein übergeordnetes Fenster zum Verarbeiten von Benachrichtigungen, einen Wiedergabebereich zum Wiedergeben von AVI-Dateien und Benachrichtigungen über Gerätemodusänderungen, um zu identifizieren, wenn die Wiedergabe beendet wird. Das Fenster benötigt keine Symbolleiste. Sie können diese Merkmale festlegen, indem Sie die entsprechenden Stile in MCIWndCreate angeben.

Im folgenden Beispiel werden Menübefehle verwendet, um ein MCIWnd-Fenster zum Wiedergeben von Inhalten von verschiedenen Gerätetypen zu erstellen. Die MCIWndCreate-Funktion erstellt das MCIWnd-Fenster, und Geräte und Dateien werden mithilfe des MCIWndOpen-Makros in den gerätespezifischen Befehlen geladen. Wenn ein Gerät die Wiedergabe beendet hat, schließen Sie das Gerät, indem Sie die MCIWNDM_NOTIFYMODE-Nachricht abfangen und das MCIWndClose-Makro ausgeben.

case WM_COMMAND: 
    switch (wParam) 
    { 
        case IDM_CREATEMCIWND: 
            dwMCIWndStyle = WS_CHILD |     // child window
                WS_VISIBLE |               // visible
                MCIWNDF_NOTIFYMODE |       // notifies of mode changes
                MCIWNDF_NOPLAYBAR;            // hides toolbar 
            g_hwndMCIWnd = MCIWndCreate(hwnd, 
                g_hinst, dwMCIWndStyle, NULL); 
            break; 
        case IDM_PLAYCDA: 
            LoadNGoMCIWnd(hwnd, "CDAudio"); 
            break; 
        case IDM_PLAYWAVE: 
            LoadNGoMCIWnd(hwnd, "SoundWave.WAV"); 
            break; 
        case IDM_PLAYMIDI: 
            LoadNGoMCIWnd(hwnd, "MIDIFile.MID"); 
            break; 
        case IDM_PLAYAVI: 
            LoadNGoMCIWnd(hwnd, "AVIFile.AVI"); 
            break; 
        case IDM_EXIT: 
            MCIWndDestroy(g_hwndMCIWnd); 
            DestroyWindow(hwnd); 
            break; 
    } 
    break; 
 
case MCIWNDM_NOTIFYMODE: 
    if (lParam == MCI_MODE_STOP)  // device stopped
    { 
        MessageBox(hwnd,"","Closing Device",MB_OK); 
        MCIWndClose(g_hwndMCIWnd); 
    } 
    break; 

// Handle other messages here. 
 
// LoadNGoMCIWnd - automatically loads and plays a multimedia device 
// 
// hwnd -  handle to the parent window 
// lpstr - pointer to device or filename played by device 
// 
// Global variable 
// extern HINSTANCE g_hwndMCIWnd;  instance handle to MCIWnd window 
 
VOID LoadNGoMCIWnd(HWND hwnd, LPSTR lpstr) 
{ 
    MessageBox(hwnd, lpstr, "Loading Device", MB_OK); 
    MCIWndOpen(g_hwndMCIWnd, lpstr, NULL);   // new device in window 
    MCIWndPlay(g_hwndMCIWnd);                // plays device 
}