Limitation de l’étendue de lecture

Le contrôle de la lecture commence par la macro MCIWndPlay , qui lit le contenu ou le fichier associé à une fenêtre MCIWnd de la position de lecture actuelle jusqu’à la fin du contenu. Si vous souhaitez limiter la lecture à une partie spécifique du contenu ou du fichier, vous pouvez choisir parmi les autres macros de lecture MCIWnd : MCIWndPlayFrom, MCIWndPlayToet MCIWndPlayFromTo.

Vous devez également définir un format d’heure approprié. Le format d’heure détermine si le contenu est mesuré en images, millisecondes, pistes ou d’autres unités.

L’exemple suivant crée une fenêtre MCIWnd et fournit des commandes de menu pour lire le dernier tiers, le premier tiers ou le troisième milieu du contenu. Ces commandes de menu utilisent MCIWndPlayFrom, MCIWndPlayTo et MCIWndPlayFromTo pour lire les segments de contenu. L’exemple utilise également les macros MCIWndGetStart et MCIWndGetEnd pour identifier le début et la fin du contenu, et il utilise la macro MCIWndHome pour déplacer la position de lecture jusqu’au début du contenu.

La fonction MCIWndCreate utilise les _ styles WS Caption et MCIWNDF _ ShowAll en plus des styles de fenêtre standard pour afficher le nom de fichier, le mode et la position de lecture actuelle dans la barre de titre de la fenêtre 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. 
    }