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,



// 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,



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,



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
Unix Manual Pages
Delphi Examples