再生スコープの制限
[このページに関連付けられている機能 である MCIWnd ウィンドウ クラスは、従来の機能です。 MediaPlayer に置き換わりました。 MediaPlayer は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能な場合は MCIWnd ウィンドウ クラスではなく MediaPlayer を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
再生の制御は、現在の再生位置からコンテンツの末尾まで MCIWnd ウィンドウに関連付けられているコンテンツまたはファイルを再生する MCIWndPlay マクロで始まります。 コンテンツまたはファイルの特定の部分に再生を制限する場合は、他の再生 MCIWnd マクロ (MCIWndPlayFrom、MCIWndPlayTo、MCIWndPlayFromTo) から選択できます。
また、適切な時刻形式を設定する必要があります。 時間形式は、コンテンツをフレーム、ミリ秒、トラック、またはその他の単位で測定するかどうかを決定します。
次の例では、MCIWnd ウィンドウを作成し、コンテンツの最後の 3 番目、最初の 3 番目、または中央の 3 分の 1 を再生するメニュー コマンドを提供します。 これらのメニュー コマンドでは、 MCIWndPlayFrom、 MCIWndPlayTo、 MCIWndPlayFromTo を使用してコンテンツ セグメントを再生します。 この例では、 MCIWndGetStart マクロと MCIWndGetEnd マクロを使用してコンテンツの先頭と末尾を識別し、 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.
}