[與此頁面相關聯的功能,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.
}