Шаг 1 - Краткое введение

Интерфейс управления устройствами MCI (Media Control Interface) позволяет программам для Windows работать с различными устройствами мультимедиа которые включают в себя CD-ROM, звуковую карту, проигрыватель видеодисков, даже видеомагнитофон и т.д.

При помощи функций MCI мы можем управлять выше перечисленными устройствами, посылая им специальные команды такие как: воспроизведение, остановка, воспроизведение с заданной позиции и т.д.

Конкретный набор команд соответствует каждому устройству свой. Эту команду мы передаем в функцию интерфейса MCI.

Все функции интерфейса MCI начинаются с префикса mci и делятся на три группы:

Две функции высокого уровня - mciSendCommand() и mciSendString() выполняют одну и туже функцию. Отличие между ними заключается в способе подачи команд.

Первую функцию, которую мы рассмотрим будет mciSendCommand(). Она описывается следующим образом:

DWORD mciSendCommand(MCIDEVICEID IDDevice,
	UINT uMsg,
	DWORD fdwCommand,
	DWORD 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 !!! Иначе "пролетите"!

Но это еще не все, на что способна эта функция! Продолжение следует.


Следующий Шаг | Оглавление
Автор Владимир Потапов - 13.03.2000