Как передать устройству управляющую строку?
Очень просто - для этого можно воспользоваться функцией mciSendString . Прототип функции mciSendString находится в файле mmsystem.h: Функция mciSendString DWORD mciSendString( LPCSTR lpstrCommand, // управляющая строка LPSTR lpstrReturnString, // буфер для результата UINT wReturnLength, // размер буфера HANDLE hCallback) // идентификатор окна извещения
Параметры функции: lpstrCommand
Дальний указатель на текстовую управляющую строку lpstrReturnString
Размер буфера для записи результата выполнения команды hCallback
Идентификатор окна, которое получит извещение (сообщение MM_MCINOTIFY) после того как устройство завершит операцию. Этот параметр можно указать как NULL, если извещение не используется
Возвращаемое значение:
Нуль при успешном завершении или код ошибки (в младшем слове возвращаемого значения): MCIERR_BAD_CONSTANT
Указана константа, неправильная для данной команды MCIERR_BAD_INTEGER
Указано значение, неправильное для данной команды MCIERR_DUPLICATE_FLAGS
Двойное определение параметра или значения MCIERR_MISSING_COMMAND_STRING
Не указана управляющая строка MCIERR_MISSING_DEVICE_NAME
Не указано имя устройства, драйвера, файла или алиас MCIERR_MISSING_STRING_ARGUMENT
Не указан обязательный параметр команды MCIERR_NEW_REQUIRED_ALIAS
При использовании параметра new следует указать алиас MCIERR_NO_CLOSING_QUOTE
В команде отсутствуют закрывающие двойные кавычки MCIERR_NOTIFY_ON_AUTO_OPEN
Для устройств, открываемых автоматически, нельзя указывать флаг notify (флаг notify указывает на необходимость генерации извещающего сообщения при завершении выполнения операции, мы расскажем об этом флаге позже) MCIERR_PARAM_OVERFLOW
Строка параметров не помещается в буфер. Необходимо увеличить размер буфера MCIERR_PARSER_INTERNAL
Ошибка в драйвере устройства. Следует заменить драйвер на новый, более поздней версии MCIERR_UNRECOGNIZED_KEYWORD
Драйвер не распознал параметр управляющей строки
Например, для проигрывания wav-файла вы можете использовать следующую последовательность вызовов функции mciSendString : mciSendString( (LPSTR)"open ding.wav type waveaudio alias snd wait", (LPSTR)szBuf, 256, NULL); mciSendString((LPSTR)"play snd wait", (LPSTR)szBuf, 256, NULL); mciSendString((LPSTR)"close snd", (LPSTR)szBuf, 256, NULL);
Для преобразования кода ошибки, полученного от функции mciSendString, в текстовую строку, можно воспользоваться функцией mciGetErrorString , которой необходимо передать двойное слово кода ошибки. Функция mciGetErrorString UINT mciGetErrorString( DWORD dwError, // код ошибки LPSTR lpstrBuffer, // буфер для записи текстовой строки UINT wLength); // размер буфера
Параметры функции: dwError
Код ошибки, полученный от функции mciSendString или mciSendCommand (функция mciSendCommand предназначена для передачи управляющих сообщений, она будет рассмотрена позже) lpstrBuffer
Буфер, в который будет записано текстовое описание ошибки wLength
Размер буфера в байтах
Возвращаемое значение:
TRUE при успешном завершении или FALSE, если переданному коду ошибки не соответствует ни одно текстовое описание