Het afspeelbereik beperken
[De functie die is gekoppeld aan deze pagina, MCIWnd Window Class, is een verouderde functie. Het is vervangen door MediaPlayer. MediaPlayer is geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan dat nieuwe code MediaPlayer gebruikt in plaats van MCIWnd Window Class, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]
Afspelen beheren begint met de MCIWndPlay macro, waarmee de inhoud of het bestand dat is gekoppeld aan een MCIWnd-venster vanaf de huidige afspeelpositie tot het einde van de inhoud wordt afgespeeld. Als u het afspelen wilt beperken tot een bepaald gedeelte van de inhoud of het bestand, kunt u kiezen uit de andere MCIWnd-macro's: MCIWndPlayFrom, MCIWndPlayToen MCIWndPlayFromTo.
U moet ook een geschikte tijdnotatie instellen. De tijdnotatie bepaalt of de inhoud wordt gemeten in frames, milliseconden, sporen of andere eenheden.
In het volgende voorbeeld wordt een MCIWnd-venster gemaakt en worden menuopdrachten weergegeven om de laatste derde, eerste derde of middelste derde van de inhoud af te spelen. Deze menuopdrachten gebruiken MCIWndPlayFrom, MCIWndPlayToen MCIWndPlayFromTo om de inhoudssegmenten af te spelen. In het voorbeeld wordt ook de MCIWndGetStart en MCIWndGetEnd macro's gebruikt om het begin en einde van de inhoud te identificeren en wordt de MCIWndHome- macro gebruikt om de afspeelpositie naar het begin van de inhoud te verplaatsen.
De functie MCIWndCreate maakt gebruik van de stijlen WS_CAPTION en MCIWNDF_SHOWALL naast de standaardvensterstijlen om de bestandsnaam, modus en huidige afspeelpositie weer te geven op de titelbalk van het MCIWnd-venster.
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.
}