Playing a Compact Disc Track

The following example opens a CD audio device, plays the track specified by the bTrack parameter, and closes the device after playback is complete.

// Plays a specified audio track using MCI_OPEN, MCI_PLAY. Returns as

// soon as playback begins. The window procedure function for the

// specified window will be notified when playback is complete.

// Returns 0L on success; otherwise, returns an MCI error code.

DWORD playCDTrack(HWND hWndNotify, BYTE bTrack)

{

UINT wDeviceID;

DWORD dwReturn;

MCI_OPEN_PARMS mciOpenParms;

MCI_SET_PARMS mciSetParms;

MCI_PLAY_PARMS mciPlayParms;

// Open the CD audio device by specifying the device name.

mciOpenParms.lpstrDeviceType = "cdaudio";

if (dwReturn = mciSendCommand(NULL, MCI_OPEN,

MCI_OPEN_TYPE, (DWORD)(LPVOID) &mciOpenParms))

{

// Failed to open device. Don't close it; just return error.

return (dwReturn);

}

// The device opened successfully; get the device ID.

wDeviceID = mciOpenParms.wDeviceID;

// Set the time format to track/minute/second/frame (TMSF).

mciSetParms.dwTimeFormat = MCI_FORMAT_TMSF;

if (dwReturn = mciSendCommand(wDeviceID, MCI_SET,

MCI_SET_TIME_FORMAT, (DWORD)(LPVOID) &mciSetParms))

{

mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);

return (dwReturn);

}

// Begin playback from the given track and play until the beginning

// of the next track. The window procedure function for the parent

// window will be notified with an MM_MCINOTIFY message when

// playback is complete. Unless the play command fails, the window

// procedure closes the device.

mciPlayParms.dwFrom = 0L;

mciPlayParms.dwTo = 0L;

mciPlayParms.dwFrom = MCI_MAKE_TMSF(bTrack, 0, 0, 0);

mciPlayParms.dwTo = MCI_MAKE_TMSF(bTrack + 1, 0, 0, 0);

mciPlayParms.dwCallback = (DWORD) hWndNotify;

if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY,

MCI_FROM | MCI_TO | MCI_NOTIFY, (DWORD)(LPVOID) &mciPlayParms))

{

mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);

return (dwReturn);

}

return (0L);

}

To specify a position relative to a track on a compact disc, you must use the track/minute/second/frame (TMSF) time format.

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples