自动播放 MCIWnd
[与此页面关联的功能 MCIWnd Window 类是一项旧功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer 而不是 MCIWnd Window 类。 如果可能,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
}