Приложение MCISTRVW (листинг 2.4) демонстрирует использование строчного интерфейса MCI для воспроизведения звукового файла с именем kaas.wav, расположенного в текущем каталоге (файл kaas.wav есть в каталоге mcistrvw на дискете, которая продается вместе с книгой). Это простейшее приложение не создает ни одного окна и, следовательно, не обрабатывает сообщения.
Листинг 2.4. Файл mcistrvw\mcistrvw.cpp
// ----------------------------------------------------- // Приложение MCISTRVW // Демонстрирует использование командных строк MCI // ----------------------------------------------------- #define STRICT #include <windows.h> #include <mmsystem.h>
void mciwioError(DWORD dwrc);
#pragma argsused int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow) { DWORD dwrc; BYTE szBuf[256], szBuf1[256];
// Открываем файл kaas.wav dwrc = mciSendString( (LPSTR)"open kaas.wav type waveaudio alias patr wait", (LPSTR)szBuf, 256, NULL); if(dwrc) mciwioError(dwrc);
// Получаем имя устройства, под которым оно установлено // в файле system.ini dwrc = mciSendString((LPSTR)"sysinfo patr installname wait", (LPSTR)szBuf, 256, NULL); if(dwrc) mciwioError(dwrc);
lstrcat(szBuf, (LPSTR)"\n");
// Добавляем к нему текстовое описание аппаратуры dwrc = mciSendString((LPSTR)"info patr product wait", (LPSTR)szBuf1, 256, NULL); if(dwrc) mciwioError(dwrc); lstrcat(szBuf, szBuf1);
// Выводим на экран полученную информацию об устройстве MessageBox(NULL, szBuf, "MCISTRWV", MB_ICONINFORMATION);
Сразу после запуска приложение открывает устройство waveaudio с файлом kaas.wav, передавая ему следующую команду: open kaas.wav type waveaudio alias patr wait
При этом устройству назначается алиас patr. Так как задан параметр wait, работа приложения будет продолжена только после завершения процесса открытия.
После открытия устройства приложение получает от него некоторую справочную информацию, и затем выводит ее на экран с помощью функции MessageBox.
Для проигрывания выдается следующая команда (используется алиас, назначенный при открытии устройства): play patr wait
Работа приложения MCISTRVW приостанавливается до завершения процесса воспроизведения, однако при этом другие приложения могут работать.
Перед завершением своей работы приложение закрывает устройство: close patr
Каждый раз после выдачи команды приложение проверяет код возврата функции mciSendString. Если он не равен нулю, вызывается обработчик ошибок (функция mciwioError), задача которого заключается в выводе текстового описания ошибки на экран. Для преобразования кода ошибки в текстовое сообщение используется функция mciGetErrorString.
Файл ресурсов приложения MCISTRVW приведен в листинге 2.5.
Листинг 2.5. Файл mcistrvw\mcistrvw.def APPICON ICON "mcistrwv.ico"
Файл определения модуля вы сможете найти в листинге 2.6.
Листинг 2.6. Файл mcistrvw\mcistrvw.def NAME MCISTRVW DESCRIPTION 'Приложение MCISTRVW, (C) 1994, Frolov A.V.' EXETYPE windows STUB 'winstub.exe' STACKSIZE 8120 HEAPSIZE 1024 CODE preload moveable discardable DATA preload moveable multiple