Автоматизация воспроизведения для MCIWnd
[Функция, связанная с этой страницей, класс окна MCIWnd, является устаревшей функцией. Его заменил MediaPlayer. MediaPlayer оптимизирован для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать новый код MediaPlayer вместо класса MCIWnd Windowпо возможности. Корпорация Майкрософт предлагает, что существующий код, использующий устаревшие API, будет перезаписан для использования новых API, если это возможно.]
Вы можете автоматизировать воспроизведение для MCIWnd, указав определенные стили окон в функции MCIWndCreate. Для воспроизведения устройства в окне требуется родительское окно для обработки сообщений уведомлений, области воспроизведения для воспроизведения файлов 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
}