Интерфейс управляющих сообщений MCI
Интерфейс управляющих сообщений более удобен для приложений, составленных на языках программирования С и С++. Он предполагает посылку устройствам мультимедиа управляющих сообщений с помощью функции mciSendCommand .
В качестве одного из параметров этой функции передается двоичный код управляющего сообщения (команды). Символические константы кодов команд определены в файле mmsystem.h. В дополнение к коду команды функции mciSendCommand передается структура параметров, формат которой зависит от кода команды, а также другая дополнительная информация, необходимая для выполнения команды.
Как правило, большинство приложений, составленных на языках программирования C и C++, управляют устройством чтения CD ROM с помощью интерфейса управляющих сообщений MCI. Напомним, что приложения, использующие этот интерфейс, посылают устройствам мультимедиа управляющие сообщения с помощью функции mciSendCommand .
Рассмотрим особенности команд MCI, предназначенных для устройства чтения компакт-дисков.
Использование интерфейса управляющих сообщений для проигрывания mid-файлов аналогично использованию этого интерфейса для проигрывания wav-файлов. Перечислим кратко допустимые коды управляющих сообщений и самые нужные параметры, специфические для драйвера mciseq.drv.
MCI_OPEN
Устройство sequencer открывается командой MCI_OPEN с использованием структуры MCI_OPEN_PARMS, определенной в файле mmsystem.h.
Поле lpstrDeviceType в этой структуре должно содержать указатель на строку имени устройства, или константный идентификатор устройства. Для устройства sequencer вы можете указать имя "sequencer " или константу MCI_DEVTYPE_SEQUENCER .
Через параметр lpstrElementName передается указатель на путь к проигрываемому mid-файлу.
MCI_CLOSE
Эта команда закрывает устройство. Ее необходимо выдавать после завершения работы с устройством.
MCI_PLAY
Команда MCI_PLAY предназначена для проигрывания. Для mid-файлов она используется точно таким же образом, что и для wav-файлов.
MCI_PAUSE
Команда MCI_PAUSE приостанавливает выполнение операции проигрывания.
MCI_RESUME
Эта команда не поддерживается драйвером mciseq.drv . Используйте вместо нее команду MCI_PLAY без указания позиции (для запуска проигрывания с текущей позиции).
MCI_STOP
Команда MCI_STOP останавливает выполнение операции проигрывания.
MCI_SEEK
Команда MCI_SEEK позволяет выполнять позиционирование в пределах mid-файла.
MCI_BREAK
С помощью команды MCI_BREAK указывается виртуальный код клавиши, с помощью которой можно прервать выполнение операции.
MCI_GETDEVCAPS
С помощью команды MCI_GETDEVCAPS можно определить возможности устройства.
MCI_INFO
С помощью этой команды можно получить информацию об устройстве в виде текстовой строки, такую как описание аппаратуры, имя файла, связанного с устройством.
MCI_SYSINFO
С помощью этой команды можно получить системную информацию об устройстве в виде текстовой строки.
MCI_STATUS
Команда MCI_STATUS используется для определения текущего состояния устройства.
MCI_SET
Команда MCI_SET предназначена для установки режима работы устройства.
MCI_COPY
Команда MCI_COPY предназначена для копирования данных в универсальный буфер обмена Clipboard. Для нее используется блок параметров в формате структуры MCI_GENERIC_PARMS, флаги MCI_NOTIFY и MCI_WAIT.
MCI_PASTE
Команда MCI_PASTE вставляет данные из Clipboard в текущий буфер устройства. Для нее, как и для команды MCI_COPY, используется блок параметров в формате структуры MCI_GENERIC_PARMS, флаги MCI_NOTIFY и MCI_WAIT.
MCI_CUT
Команда MCI_CUT удаляет данные из текущего буфера устройства и копирует их в универсальный буфер обмена Clipboard. Для нее используется блок параметров в формате структуры MCI_GENERIC_PARMS, флаги MCI_NOTIFY и MCI_WAIT.
MCI_DELETE
Команда MCI_DELETE удаляет данные из текущего буфера устройства без копирования их в Clipboard.
MCI_LOAD
Команда MCI_LOAD предназначена для загрузки файла.