Jump to content

  • Log In with Google      Sign In   
  • Create Account


NICK...I NEED MORE HELP!


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
1 reply to this topic

#1 Smelly   Members   -  Reputation: 122

Like
Likes
Like

Posted 18 February 2000 - 06:16 PM

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

Sponsor:

#2 Nick Murphy   Members   -  Reputation: 1604

Like
Likes
Like

Posted 19 February 2000 - 09:00 AM

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 © 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




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS