共用方式為


限制播放範圍

[與此頁面 相關聯的功能 MCIWnd 視窗類別是舊版功能。 MediaPlayer已取代它。 MediaPlayer已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer 而非 MCIWnd Window 類別。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

控制播放是從 MCIWndPlay 宏開始,它會播放與目前播放位置到內容結尾之 MCIWnd 視窗相關聯的內容或檔案。 如果您想要將播放限制為內容或檔案的特定部分,您可以從其他播放 MCIWnd 宏中選擇:MCIWndPlayFromMCIWndPlayTo 和 MCIWndPlayFromTo

您也需要設定適當的時間格式。 時間格式會決定內容是以畫面格、毫秒、曲目或其他單位來測量。

下列範例會建立 MCIWnd 視窗,並提供功能表命令來播放內容的最後三個、第一個或中間第三個。 這些功能表命令會使用MCIWndPlayFromMCIWndPlayTo 和 MCIWndPlayFromTo來播放內容區段。 此範例也會使用 MCIWndGetStartMCIWndGetEnd 宏來識別內容的開頭和結尾,並使用 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. 
    }