Интерфейс управления устройствами MCI (Media Control Interface) - MCI Play&Stop
ОГЛАВЛЕНИЕ
MCI Play&Stop
Рассмотрим пример воспроизведения CD-треков.
mciSetParms.dwTimeFormat = MCI_FORMAT_TMSF;
flags = MCI_SET_TIME_FORMAT;
mciSendCommand(wDeviceID, MCI_SET, flags, (DWORD)& mciSetParms);
Первым делом устанавливаем формат времени. Используем уже знакомую структуру - MCI_SET_PARMS, в которой устанавливаем параметр MCI_FORMAT_TMSF. Он говорит о том, что формат времени устанавливается в треках, минутах, секундах и фреймах. В качестве флага передаем флаг параметра времени - MCI_SET_TIME_FORMAT. Ну, а дальше запускаем нашу функцию.
Для того, чтобы воспроизвести трек необходимо воспользоваться командой MCI_PLAY, которая зависит от структуры MCI_PLAY_PARMS. Вот ее описание:
typedef struct {
DWORD dwCallback;
DWORD dwFrom;
DWORD dwTo;
} MCI_PLAY_PARMS;
Где
- dwCallback - указатель на функцию "возврата"
- dwFrom - позиция начала воспроизведения
- dwTo - позиция конца воспроизведения
После того когда мы установили формат времени, в котором будет воспроизводиться трек, следующее что нам надо узнать, это длину трека по которому в дальнейшем мы определим начало и конец воспроизведения. Вот пример кода:
// Определяем длину трека через уже "готовую"
//функцию, где track - это номер трека
DWORD lengthTrack = LengthTrack(track);
// С помощью функции MCI_MAKE_TMSF зададим начало и конец
// воспроизведения воспользовавшись структурой MCI_PLAY_PARMS.
mciPlayParms.dwFrom = MCI_MAKE_TMSF(track, 0, 0, 0);
mciPlayParms.dwTo = MCI_MAKE_TMSF(track,
MCI_MSF_MINUTE(lengthTrack),
MCI_MSF_SECOND(lengthTrack),
MCI_MSF_FRAME(lengthTrack));
// Зададим нужные флаги
flags = MCI_FROM | MCI_TO;
// Начнем воспроизведение
mciSendCommand(wDeviceID, MCI_PLAY, flags, (DWORD)& mciPlayParms);
При использовании флагов MCI_FROM и MCI_TO необходимо устанавливать формат времени, как мы это сделали в начале этого упражнения.
Теперь пора рассмотреть другую команду - MCI_STOP (комментариев я думаю не надо). Действуем по аналогии с командами открытия и закрытия CD.
mciSendCommand(wDeviceID, MCI_STOP, 0, (DWORD)& mciGenericParms);
Это все, что нужно сделать.