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
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database