Automatización de la reproducción para MCIWnd
[La característica asociada a esta página, clase de ventana MCIWnd, es una característica heredada. Se ha reemplazado por MediaPlayer. MediaPlayer se ha optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use MediaPlayer en lugar de la clase de ventana MCIWnd, 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.
Puede automatizar la reproducción de MCIWnd especificando determinados estilos de ventana en la función MCIWndCreate . Para reproducir el dispositivo, la ventana necesita una ventana primaria para procesar mensajes de notificación, un área de reproducción para reproducir archivos AVI y notificación de cambios en el modo de dispositivo para identificar cuándo se detiene la reproducción. La ventana no necesita una barra de herramientas. Puede establecer estas características especificando los estilos adecuados en MCIWndCreate.
En el ejemplo siguiente se usan comandos de menú para crear una ventana de MCIWnd para reproducir contenido de varios tipos diferentes de dispositivos. La función MCIWndCreate crea la ventana MCIWnd y los dispositivos y archivos se cargan mediante la macro MCIWndOpen en los comandos específicos del dispositivo. Cuando un dispositivo termine de reproducirse, cierre el dispositivo capturando el mensaje de MCIWNDM_NOTIFYMODE y emitiendo la macro MCIWndClose .
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
}