• Advertisement

Archived

This topic is now archived and is closed to further replies.

NICK...I NEED MORE HELP!

This topic is 6546 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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!?

Share this post


Link to post
Share on other sites
Advertisement
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

Share this post


Link to post
Share on other sites

  • Advertisement