Ограничение области воспроизведения
[Функция, связанная с этой страницей, MCIWnd Window Class, является устаревшей функцией. Он был заменен MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует по возможности использовать MediaPlayer вместо класса MCIWnd Window. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Управление воспроизведением начинается с макроса MCIWndPlay , который воспроизводит содержимое или файл, связанные с окном MCIWnd, от текущей позиции воспроизведения до конца содержимого. Если вы хотите ограничить воспроизведение определенной частью содержимого или файла, можно выбрать один из других макросов воспроизведения MCIWnd: MCIWndPlayFrom, MCIWndPlayTo и MCIWndPlayFromTo.
Кроме того, необходимо задать соответствующий формат времени. Формат времени определяет, измеряется ли содержимое в кадрах, миллисекундах, дорожках или других единицах.
В следующем примере создается окно MCIWnd и предоставляются команды меню для воспроизведения последней трети, первой трети или средней трети содержимого. Эти команды меню используют MCIWndPlayFrom, MCIWndPlayTo и MCIWndPlayFromTo для воспроизведения сегментов содержимого. В примере также используются макросы MCIWndGetStart и MCIWndGetEnd для определения начала и конца содержимого, а макрос MCIWndHome используется для перемещения позиции воспроизведения в начало содержимого.
Функция MCIWndCreate использует стили WS_CAPTION и MCIWNDF_SHOWALL в дополнение к стандартным стилям окна для отображения имени файла, режима и текущей позиции воспроизведения в заголовке окна 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.
}