Шаг 7 - 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; 

Где

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

// Определяем длину трека через уже "готовую" 
//функцию, где 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); 

Это все, что нужно сделать.


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