限制播放範圍
[與此頁面 相關聯的功能 MCIWnd 視窗類別是舊版功能。 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.
}