Limitation de l’étendue de lecture
[La fonctionnalité associée à cette page, classe de fenêtre MCIWnd, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer. MediaPlayer a été optimisé pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer au lieu de la classe de fenêtre MCIWnd, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
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 MCIWnd de lecture : MCIWndPlayFrom, MCIWndPlayTo et 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 tiers central 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 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.
}