Advertisement

NICK...I NEED MORE HELP!

Started by February 19, 2000 12:16 AM
0 comments, last by Smelly 24 years, 9 months ago
Could somebody help me play a CD with MCI Commands through C++ by sending me a tutorial or a link to a tutorial. I am kind of new and the stuff I found about it is really complicated...mabey the stuff you guys send me is easier!?
Smelly,

MCI is awfully easy to use. It involves basically using the mciSendCommand, and sending the right commands. You would start out by sending MCI_OPEN to the MCI_DEVTYPE_CD_AUDIO device, then sending MCI_PLAY, MCI_SEEK, MCI_STOP, etc. to control the playing.

There is full source code in the VC++ documentation. Here is the listing of a file from the sample app CDINFO:

// ccdinfo.cpp : device manager class implementation//// This is a part of the Active Template Library.// Copyright (C) 1996-1998 Microsoft Corporation// All rights reserved.//// This source code is only intended as a supplement to the// Active Template Library Reference and related// electronic documentation provided with the library.// See these sources for detailed information regarding the// Active Template Library product.#include "stdafx.h"#include "ccdinfo.h"CDInfo::CDInfo(){	// We don't have an open device yet	m_MCIOpen.wDeviceID = 0;	m_nNumberOfTracks = 0;}CDInfo::~CDInfo(){	// If we have an open device then we'll be nice and close it.//  if (m_MCIOpen.wDeviceID != -1)//  {//      mciSendCommand(m_MCIOpen.wDeviceID, MCI_CLOSE, NULL, NULL);//  }}short CDInfo::Read(){	int   i;	short nTrackLength;	m_nNumberOfTracks = 0;	m_MCIOpen.lpstrDeviceType = (LPCTSTR)MCI_DEVTYPE_CD_AUDIO;	if (mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE/MCI_OPEN_TYPE_ID, (DWORD)(LPVOID)&m_MCIOpen))	{		ATLTRACE(_T("Couldn't open CD player"));	}	m_MCIStatus.dwItem = MCI_STATUS_NUMBER_OF_TRACKS;	if (mciSendCommand(m_MCIOpen.wDeviceID, MCI_STATUS, MCI_STATUS_ITEM/MCI_WAIT, (DWORD)(LPVOID)&m_MCIStatus))	{		ATLTRACE(_T("Error getting number of tracks"));		mciSendCommand(m_MCIOpen.wDeviceID, MCI_CLOSE, NULL, NULL);		return 0;	}	m_nNumberOfTracks = (short)m_MCIStatus.dwReturn;	if (m_nNumberOfTracks > MAX_TRACKS)		m_nNumberOfTracks = MAX_TRACKS;	m_MCIStatus.dwItem = MCI_STATUS_LENGTH;	for (i=0; i	{		m_MCIStatus.dwTrack = i+1;		mciSendCommand(m_MCIOpen.wDeviceID, MCI_STATUS, MCI_TRACK/MCI_STATUS_ITEM/MCI_WAIT, (DWORD)(LPVOID)&m_MCIStatus);		nTrackLength = (short)(MCI_MSF_MINUTE(m_MCIStatus.dwReturn)*60 + MCI_MSF_SECOND(m_MCIStatus.dwReturn));		m_nTrackLength  = nTrackLength;	}	mciSendCommand(m_MCIOpen.wDeviceID, MCI_CLOSE, NULL, NULL);	return m_nNumberOfTracks;}void CDInfo:lay(short nTrack){	MCI_SET_PARMS   mciSet;	MCI_PLAY_PARMS  mciPlay;	m_MCIOpen.lpstrDeviceType = (LPCTSTR)MCI_DEVTYPE_CD_AUDIO;	if (mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_TYPE/MCI_OPEN_TYPE_ID, (DWORD)&m_MCIOpen))	{		ATLTRACE(_T("Couldn't open CD player"));	}	// Set the time format to track/minute/second/frame (TMSF).	mciSet.dwTimeFormat = MCI_FORMAT_TMSF;	if (mciSendCommand(m_MCIOpen.wDeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)&mciSet))	{		mciSendCommand(m_MCIOpen.wDeviceID, MCI_CLOSE, 0, NULL);		return;	}	mciPlay.dwCallback = 0;	mciPlay.dwFrom = MCI_MAKE_TMSF(nTrack, 0, 0, 0);	if (mciSendCommand(m_MCIOpen.wDeviceID, MCI_PLAY, MCI_FROM, (DWORD)&mciPlay))	{		ATLTRACE(_T("Error playing track"));	}	mciSendCommand(m_MCIOpen.wDeviceID, MCI_CLOSE, 0, NULL);} 




Edited by - Michael Tanczos on 2/20/00 2:12:08 PM

This topic is closed to new replies.

Advertisement