|
|
Интерфейс управления устройствами MCI (Media Control Interface)
|
|
Страница 1 из 7 Интерфейс управления устройствами MCI (Media Control Interface) позволяет программам для Windows работать с различными устройствами мультимедиа которые включают в себя CD-ROM, звуковую карту, проигрыватель видеодисков, даже видеомагнитофон и т.д. При помощи функций MCI мы можем управлять выше перечисленными устройствами, посылая им специальные команды такие как: воспроизведение, остановка, воспроизведение с заданной позиции и т.д.
Конкретный набор команд соответствует каждому устройству свой. Эту команду мы передаем в функцию интерфейса MCI. Все функции интерфейса MCI начинаются с префикса mci и делятся на три группы: Две функции высокого уровня - mciSendCommand() и mciSendString() выполняют одну и туже функцию. Отличие между ними заключается в способе подачи команд. Первую функцию, которую мы рассмотрим будет mciSendCommand(). Она описывается следующим образом: DWORD mciSendCommand(MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam)
где: - IDDevice - идентификатор MCI-устройства, которому адресуется команда. При открытии устройства этот параметр не используется, т.е. NULL.
- uMsg - команда
- fdwCommand - флаги для команды
- dwParam - указатель на структуру с параметрами для командного сообщения
Если функция возвращает 0, то все в полном порядке. В случае ошибки функция возвращает код ошибки. Сам код ошибки находится в младшем байте слова, а в старшем, где должен был бы находится код нашего устройства, будет 0. Следует акцентировать Ваше внимание на четвертом параметре этой функции. Различные команды пользуются различными наборами исходных данных. Перед тем как вызвать функцию, мы должны заполнить структуру данными, необходимыми для выполнения только одной нужной нам команды. Что же представляет из себя функция mciSendString() ? Вот ее описание: DWORD mciSendString(LPTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback)
где: Итак, функция возвращает 0 в случае удачи и, соответственно, код ошибки в противном лучае. С помощью кода ошибки можно получить дополнительную информацию. Это относится и к mciSendCommand()! Не путайте это с параметром lpszReturnString, он просто хранит информацию о том, какую работу выполняет данная функция. Вот маленький примерчик: воспроизведение wave-файла. #include "stdafx.h" #include <mmsystem.h>
void main() { DWORD result = mciSendString("play c:\\windows\\media\\tada.wav wait", NULL, 0, NULL); if (result) printf("Ошибка"); }
Необходимо добавить библиотеку winmm.lib !!! Иначе "пролетите"!
|
|
-
Visual C++,
Работа с СУБД Oracle через интерфейс OCCI
OCCI - расшифровывается как Oracle C++ Call Interface и представляет собой специализированное апи для работы с СУБД Oracle используя C++ что в общем то явствует из названия. Для использования необходимо подключить заголовочный файл "occi.h"....
-
Visual C++,
Задача Майхилла для Microsoft Visual C++
О синхронизации процессов в среде Windows. Задача Майхилла - еще один (наряду с задачей RS-триггера) пример решения нетривиальных проблем создания сложных систем. Справившись с ней, мы научимся организовывать взаимодействие параллельно работающих компонентов сложных программных комплексов в жестких условиях. ...
-
Visual C++,
Использование ODBC в Visual C++
Класс CDatabase представляет собой класс, который обеспечивает связь с источником данных. Под источником данных может пониматься как непосредсвенно файл, в котором находится таблица, например dBase, так и файл с многими таблицами, например Microsoft Access или сервер баз данных Oracle, MS SQL Server и т.д. Для связи с источником данных используется интерфейс ODBC. У данного класса есть папа в виде класса
-
Visual C++,
Создание простого приложения с плагинами
В этой статье описываются принципы и решения, применяемые при проектировании приложений, которые будут использовать внешние, динамически подключаемые, модули. Эта статья более ориентирована на тех, кто хочет использовать механизмы подключения/отключения функциональности приложения, наподобии механизма Aobe Photoshop или Far, а не просто многократного использования кода в разных приложениях....
-
Visual C++,
Работа с 1C Предприятие из Visual C++
В данной статье показано, как можно работать с 1С Предприятием из С++ с помощью OLE DB. Так же она будет интересна тем, кто не пользуется C++, но хочет узнать подробности "а как оно устроено внутри 1С". В данной статье речь пойдет об 1С Предприятии версии 7.7. Полагаю, что в версии 8 мало что изменилось. Предполагается, что читатель хотя бы чуть-чуть знаком с 1С Предприятием. Так же предполагается, что вы изучали официальное руководство 1С по вопросам OLE DB (часть вторая описани...
-
Visual C++,
Как самому сделать plug-in к FAR на Visual C++
Трудно найти человека, которые не знает или не использует Far - IMHO лучший клон NC для Windows. Кроме того, что это просто очень хороший файл менеджер, к нему есть огромное количество plug-in модулей. Plug-in модуль это DLL-файл, который вместо стандартных Windows функций по работе с монитором, клавиатурой и т.д. обращается к функциям Far-а. Far поддерживает весь набор функций для работы в текстовом режиме. Установка plug-in модуля происходит предельно просто - DLL файл и файлы данных коп...
-
Visual C++,
Использование директивы #import в Visual C++
В данной статье я попытаюсь объяснить то, как работает эта директива и привести несколько примеров её использования. Надеюсь, после этого вы тоже найдёте её полезной. Директива #import введена в Visual C++, начиная с версии 5.0. Её основное назначение облегчить подключение и использование интерфейсов COM, описание которых реализовано в библиотеках типов....
-
Visual C++,
Создание VxD на Visual C++ без ассемблерных модулей
Виртуальные драйверы устройств (VxD) в Windows во многих случаях являются единственным «честным» способом обхода ограничений, установленных системой для приложений Win32: невозможности прямого доступа к портам ввода-вывода и служебной памяти, эффективной обработки аппаратных прерываний, использования сервисных функций существующих VxD и т.п. Кроме того, без VxD не обходится практически ни один полноценный драйвер физического или виртуального устройства....
|
|
|