Limitazione dell'ambito di riproduzione
[La funzionalità associata a questa pagina, MCIWnd Window Class, è una funzionalità legacy. È stato sostituito da MediaPlayer. MediaPlayer è stato ottimizzato per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer invece di MCIWnd Window Class, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.
Il controllo della riproduzione inizia con la macro MCIWndPlay , che riproduce il contenuto o il file associato a una finestra MCIWnd dalla posizione di riproduzione corrente alla fine del contenuto. Se vuoi limitare la riproduzione a una parte specifica del contenuto o del file, puoi scegliere tra le altre macro MCIWnd di riproduzione: MCIWndPlayFrom, MCIWndPlayTo e MCIWndPlayFromTo.
È anche necessario impostare un formato ora appropriato. Il formato temporale determina se il contenuto viene misurato in fotogrammi, millisecondi, tracce o altre unità.
Nell'esempio seguente viene creata una finestra MCIWnd e vengono forniti i comandi di menu per riprodurre l'ultimo terzo, il primo terzo o il terzo intermedio del contenuto. Questi comandi di menu usano MCIWndPlayFrom, MCIWndPlayTo e MCIWndPlayFromTo per riprodurre i segmenti di contenuto. L'esempio usa anche le macro MCIWndGetStart e MCIWndGetEnd per identificare l'inizio e la fine del contenuto e usa la macro MCIWndHome per spostare la posizione di riproduzione all'inizio del contenuto.
La funzione MCIWndCreate usa gli stili WS_CAPTION e MCIWNDF_SHOWALL oltre agli stili standard della finestra per visualizzare il nome file, la modalità e la posizione di riproduzione corrente nella barra del titolo della finestra 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.
}