Команда MCI_SET предназначена для установки режима работы устройства. Вместе с этой командой используется блок параметров в формате структуры MCI_SET_PARMS : typedef struct tagMCI_SET_PARMS { DWORD dwCallback; DWORD dwTimeFormat; DWORD dwAudio; } MCI_SET_PARMS; typedef MCI_SET_PARMS FAR *LPMCI_SET_PARMS;
Поле dwTimeFormat определяет формат времени для устройства, поле dwAudio определяет выходной канал.
Для звуковых устройств можно использовать другую структуру: typedef struct tagMCI_WAVE_SET_PARMS { DWORD dwCallback; DWORD dwTimeFormat; DWORD dwAudio; UINT wInput; UINT wReserved0; UINT wOutput; UINT wReserved1; UINT wFormatTag; UINT wReserved2; UINT nChannels; UINT wReserved3; DWORD nSamplesPerSec; DWORD nAvgBytesPerSec; UINT nBlockAlign; UINT wReserved4; UINT wBitsPerSample; UINT wReserved5; } MCI_WAVE_SET_PARMS; typedef MCI_WAVE_SET_PARMS FAR * LPMCI_WAVE_SET_PARMS;
В этой структуре поле wInput определяет номер канала для записи, wOutput - номер канала для воспроизведения. Поле wFormatTag используется для определения формата звуковых данных. С помощью поля nChannels можно указать количество каналов - 1 (моно) или 2 (стерео). Поле nSamplesPerSec предназначено для задания частоты дискретизации (количество выборок сигнала в секунду). Поле nAvgBytesPerSec содержит скорость передачи данных (байты в секунду). С помощью поля nBlockAlign можно задать выравнивание блока, а с помощью поля wBitsPerSample - количество бит, используемых для представления одной выборки (8 или 16). Остальные поля зарезервированы.
Приведем список флагов, которые используются вместе с командой MCI_SET:
Флаг | Описание |
MCI_NOTIFY | Если установлен этот флаг, после завершения команды функции окна, адрес которой передан через поле dwCallback, будет послано сообщение MM_MCINOTIFY |
MCI_WAIT | Функция mciSendCommand вернет управление только после завершения процесса |
MCI_SET_AUDIO | Включение или выключение каналов, используется вместе с флагами MCI_SET_ON и MCI_SET_OFF. Поле dwAudio содержит номера канала. Дополнительно можно указать следующие константы:MCI_SET_AUDIO_ALL все каналыMCI_SET_AUDIO_LEFT левый каналMCI_SET_AUDIO_RIGHT правый канал |
MCI_SET_DOOR_CLOSED | По этой команде устройство защелкивает носитель данных (например, компакт-диск) |
MCI_SET_DOOR_OPEN | Освобождение носителя данных |
MCI_SET_VIDEO | Включение или выключение видеосигнала, используется вместе с флагами MCI_SET_ON и MCI_SET_OFF |
MCI_SET_ON | Включение заданного канала |
MCI_SET_OFF | Выключение заданного канала |
MCI_WAVE_INPUT | Установка канала для записи. Номер канала должен быть указан в поле wInput структуры MCI_WAVE_SET_PARAMS |
MCI_WAVE_OUTPUT | Установка канала для воспроизведения. Номер канала должен быть указан в поле wInput структуры MCI_WAVE_SET_PARAMS |
MCI_WAVE_SET_ANYINPUT | При записи следует использовать любое устройство, совместимое с заданным форматом данных |
MCI_WAVE_SET_ANYOUTPUT | При воспроизведении следует использовать любое устройство, совместимое с заданным форматом данных |
MCI_WAVE_SET_AVGBYTESPERSEC | Установить скорость потока данных при записи и воспроизведении из поля nAvgBytesPerSec |
MCI_WAVE_SET_BITSPERSAMPLE | Установить количество бит, используемых для представления одной выборки сигнала из поля wBitsPerSample |
MCI_WAVE_SET_BLOCKALIGN | Установить выравнивание блока из поля nBlockAlign |
MCI_WAVE_SET_CHANNELS | Поле nChannels содержит номер канала |
MCI_WAVE_SET_FORMATTAG | Установить формат из поля wFormatTag |
MCI_WAVE_SET_SAMPLESPERSEC | Установить частоту выборки из поля nSamplesPerSec |
MCI_WAVE_SET_TIME_FORMAT | Установить формат времени. Используется вместе со следующими константами:MCI_FORMAT_BYTES в байтах;MCI_FORMAT_MILLISECONDS в миллисекундах;MCI_FORMAT_SAMPLES в выборках сигнала |