共用方式為


限制播放範圍

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