MCIWnd の再生の自動化
[このページに関連付けられている機能 である MCIWnd ウィンドウ クラスは、従来の機能です。 MediaPlayer に置き換わりました。 MediaPlayer は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能な場合は MCIWnd ウィンドウ クラスではなく MediaPlayer を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
MCIWndCreate 関数で特定のウィンドウ スタイルを指定することで 、MCIWnd の再生を自動化できます。 デバイスを再生するには、通知メッセージを処理するための親ウィンドウ、AVI ファイルを再生する再生領域、再生が停止したタイミングを識別するためのデバイス モードの変更の通知が必要です。 ウィンドウにはツール バーは必要ありません。 これらの特性は、 MCIWndCreate で適切なスタイルを指定することで設定できます。
次の例では、メニュー コマンドを使用して MCIWnd ウィンドウを作成し、さまざまな種類のデバイスのコンテンツを再生します。 MCIWndCreate 関数は MCIWnd ウィンドウを作成し、デバイス固有のコマンドで MCIWndOpen マクロを使用してデバイスとファイルを読み込みます。 デバイスの再生が完了したら、 MCIWNDM_NOTIFYMODE メッセージをトラップし、 MCIWndClose マクロを発行して、デバイスを閉じます。
case WM_COMMAND:
switch (wParam)
{
case IDM_CREATEMCIWND:
dwMCIWndStyle = WS_CHILD | // child window
WS_VISIBLE | // visible
MCIWNDF_NOTIFYMODE | // notifies of mode changes
MCIWNDF_NOPLAYBAR; // hides toolbar
g_hwndMCIWnd = MCIWndCreate(hwnd,
g_hinst, dwMCIWndStyle, NULL);
break;
case IDM_PLAYCDA:
LoadNGoMCIWnd(hwnd, "CDAudio");
break;
case IDM_PLAYWAVE:
LoadNGoMCIWnd(hwnd, "SoundWave.WAV");
break;
case IDM_PLAYMIDI:
LoadNGoMCIWnd(hwnd, "MIDIFile.MID");
break;
case IDM_PLAYAVI:
LoadNGoMCIWnd(hwnd, "AVIFile.AVI");
break;
case IDM_EXIT:
MCIWndDestroy(g_hwndMCIWnd);
DestroyWindow(hwnd);
break;
}
break;
case MCIWNDM_NOTIFYMODE:
if (lParam == MCI_MODE_STOP) // device stopped
{
MessageBox(hwnd,"","Closing Device",MB_OK);
MCIWndClose(g_hwndMCIWnd);
}
break;
// Handle other messages here.
// LoadNGoMCIWnd - automatically loads and plays a multimedia device
//
// hwnd - handle to the parent window
// lpstr - pointer to device or filename played by device
//
// Global variable
// extern HINSTANCE g_hwndMCIWnd; instance handle to MCIWnd window
VOID LoadNGoMCIWnd(HWND hwnd, LPSTR lpstr)
{
MessageBox(hwnd, lpstr, "Loading Device", MB_OK);
MCIWndOpen(g_hwndMCIWnd, lpstr, NULL); // new device in window
MCIWndPlay(g_hwndMCIWnd); // plays device
}