Compartilhar via


Limitando o escopo de reprodução

[O recurso associado a esta página, MCIWnd Window Class, é um recurso herdado. Foi substituído pelo MediaPlayer. O MediaPlayer foi otimizado para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use o MediaPlayer em vez da Classe de Janela MCIWnd, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O controle da reprodução começa com a macro MCIWndPlay , que reproduz o conteúdo ou arquivo associado a uma janela MCIWnd da posição de reprodução atual até o final do conteúdo. Se você quiser limitar a reprodução a uma parte específica do conteúdo ou arquivo, poderá escolher entre as outras macros MCIWnd de reprodução: MCIWndPlayFrom, MCIWndPlayTo e MCIWndPlayFromTo.

Você também precisa definir um formato de hora apropriado. O formato de tempo determina se o conteúdo é medido em quadros, milissegundos, faixas ou algumas outras unidades.

O exemplo a seguir cria uma janela MCIWnd e fornece comandos de menu para reproduzir o último terço, primeiro terceiro ou terço médio do conteúdo. Esses comandos de menu usam MCIWndPlayFrom, MCIWndPlayTo e MCIWndPlayFromTo para reproduzir os segmentos de conteúdo. O exemplo também usa as macros MCIWndGetStart e MCIWndGetEnd para identificar o início e o fim do conteúdo e usa a macro MCIWndHome para mover a posição de reprodução para o início do conteúdo.

A função MCIWndCreate usa os estilos WS_CAPTION e MCIWNDF_SHOWALL além dos estilos de janela padrão para exibir o nome do arquivo, o modo e a posição de reprodução atual na barra de título da janela 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. 
    }