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