Compartir a través de


Limitar el ámbito de reproducción

[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.

El control de la reproducción comienza con la macro MCIWndPlay , que reproduce el contenido o el archivo asociado a una ventana MCIWnd desde la posición de reproducción actual hasta el final del contenido. Si desea limitar la reproducción a una parte específica del contenido o archivo, puede elegir entre las demás macros de MCIWnd de reproducción: MCIWndPlayFrom, MCIWndPlayTo y MCIWndPlayFromTo.

También debe establecer un formato de hora adecuado. El formato de tiempo determina si el contenido se mide en fotogramas, milisegundos, pistas u otras unidades.

En el ejemplo siguiente se crea una ventana MCIWnd y se proporcionan comandos de menú para reproducir el último tercio, el primero o el tercero medio del contenido. Estos comandos de menú usan MCIWndPlayFrom, MCIWndPlayTo y MCIWndPlayFromTo para reproducir los segmentos de contenido. En el ejemplo también se usan las macros MCIWndGetStart y MCIWndGetEnd para identificar el principio y el final del contenido, y usa la macro MCIWndHome para mover la posición de reproducción al principio del contenido.

La función MCIWndCreate usa los estilos WS_CAPTION y MCIWNDF_SHOWALL además de los estilos de ventana estándar para mostrar el nombre de archivo, el modo y la posición de reproducción actual en la barra de título de la ventana MCIWnd.

case WM_COMMAND: 
    switch (wParam) 
    { 
        case IDM_CREATEMCIWND: 
            g_hwndMCIWnd = MCIWndCreate(hwnd, 
                g_hinst, 
                WS_CHILD | WS_VISIBLE | WS_CAPTION | 
                MCIWNDF_SHOWALL, 
                "sample.avi"); 
            break;
        case IDM_PLAYFROM:                // plays last third of clip 
            MCIWndUseTime(g_hwndMCIWnd);  // millisecond format 
 
        // Get media start and end positions. 
            lStart = MCIWndGetStart(g_hwndMCIWnd); 
            lEnd = MCIWndGetEnd(g_hwndMCIWnd); 
 
        // Determine playback end position. 
            lPlayStart = 2 * (lEnd - lStart) / 3 + lStart; 
 
            MCIWndPlayFrom(g_hwndMCIWnd, lPlayStart); 
            break; 
        case IDM_PLAYTO:                  // plays first third of clip 
            MCIWndUseTime(g_hwndMCIWnd);  // millisecond format 
 
        // Get media start and end positions. 
            lStart = MCIWndGetStart(g_hwndMCIWnd); 
            lEnd = MCIWndGetEnd(g_hwndMCIWnd); 
 
        // Determine playback start position. 
            lPlayEnd = (lEnd - lStart) / 3 + lStart;
 
            MCIWndHome(g_hwndMCIWnd); 
            MCIWndPlayTo(g_hwndMCIWnd, lPlayEnd); 
            break; 
        case IDM_PLAYSOME:               // plays middle third of clip 
            MCIWndUseTime(g_hwndMCIWnd); // millisecond format 
 
        // Get media start and end positions. 
            lStart = MCIWndGetStart(g_hwndMCIWnd); 
            lEnd = MCIWndGetEnd(g_hwndMCIWnd); 
 
        // Determine playback start and end positions. 
            lPlayStart = (lEnd - lStart) / 3 + lStart;
            lPlayEnd = 2 * (lEnd - lStart) / 3 + lStart; 
 
            MCIWndPlayFromTo(g_hwndMCIWnd, lPlayStart, lPlayEnd); 
            break; 
    
    // Handle other commands here. 
    }