限制播放范围
[与此页面关联的功能 MCIWnd Window 类是一项旧功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 而不是 MCIWnd Window 类。 如果可能,Microsoft 建议重写使用旧 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.
}