Hello,

I am writing a CD Player application. using the MCI. So far I the app. will play a CD. When I select play-stop-play I get an error message: MMSYSTEM274 The MCI device you are using does not support the specified command. The next step I would like to do is selecting different tracks and display the tracks in the dialog box. Could any one refer me to an online source or book that may be able to help me. Currenty using Petzold and the SDK help files

Thanks


#include <windows.h>
#include "resource.h"
#include <stdio.h>
#include <time.h>
#include <mmsystem.h>



BOOL CDFunction(LPSTR szCommand)
{
MCIERROR error;
TCHAR szErrorStr[1024];
if(error = mciSendString(szCommand,NULL,0,NULL))
{
mciGetErrorString(error,szErrorStr,sizeof(szErrorS tr)/sizeof(TCHAR));
MessageBeep(MB_ICONEXCLAMATION);
MessageBox(NULL,szErrorStr,TEXT("MCI Error"),MB_OK|MB_ICONEXCLAMATION);
}
return error ==0;
}

BOOL CALLBACK CDPlayerDlgProc(HWND,UINT,WPARAM,LPARAM);



int getPixelsFromPtSize(HDC,int);

//The DialogBox creates its own message loop

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,
LPSTR lpCmdLine, int nCmdShow)
{
DialogBox(hInstance,MAKEINTRESOURCE(IDD_MAIN_DIALO G),NULL, CDPlayerDlgProc);
}

BOOL CALLBACK CDPlayerDlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
enum {fontsize =22, timerId = 999, interval = 500};
static LOGFONT lf;
static BOOL bPaused;
HFONT hFont;
char display[255];
DWORD track;



switch(msg)
{
case WM_INITDIALOG:
/* make the static control's font size to be 14 points*/

lf.lfHeight = getPixelsFromPtSize(GetDC(hDlg),fontsize);
hFont = CreateFontIndirect(&lf);
SendDlgItemMessage(hDlg,IDC_STATIC_TIMER,WM_SETFON T,(WPARAM)hFont,0);

SetTimer(hDlg,timerId,interval,NULL);


//THIS IS WHERE WE CREATE THE ICON FOR OUR DIALGO BOX
//SendMessage(hDlg,WM_SETICON,(WPARAM)IconType,(LPAR AM)hIcon);
return TRUE;

case WM_TIMER:
_strtime(display);
SetDlgItemText(hDlg, IDC_STATIC_TIMER, display);
return TRUE;

case WM_COMMAND:
switch LOWORD(wParam)
{
case IDOK:
case IDCANCEL:
KillTimer(hDlg,timerId);
EndDialog(hDlg,0);
break;

case IDC_BUTTON_PLAY:


if(!bPaused)
{
CDFunction("open cdaudio");
CDFunction("play cdaudio");
bPaused = TRUE;
}

else
{
CDFunction("resume cdaudio");
bPaused = FALSE;
}

EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PLAY), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PAUSE), TRUE) ;
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_STOP), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_NEXT_TRACK), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PREV_TRACK),TRUE);
SetFocus(GetDlgItem(hDlg, IDC_BUTTON_PLAY));


MCI_TMSF_TRACK(track);
SetDlgItemText(hDlg, IDC_STATIC_TRACK, track/*TEXT("playing a cd")*/);

break;



case IDC_BUTTON_PAUSE:

CDFunction("pause cdaudio");


EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PLAY), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PAUSE), FALSE) ;
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_STOP), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_NEXT_TRACK), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PREV_TRACK), FALSE);

SetDlgItemText(hDlg, IDC_STATIC_TRACK, TEXT("The cd is paused"));

bPaused = TRUE;

SetFocus(GetDlgItem(hDlg, IDC_BUTTON_PAUSE));

break;

case IDC_BUTTON_STOP:

CDFunction("stop cdaudio");
CDFunction("close cdaudio");

EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PLAY), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PAUSE), FALSE) ;
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_STOP), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_NEXT_TRACK), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PREV_TRACK), FALSE);

MCI_TMSF_TRACK(track);
SetDlgItemText(hDlg, IDC_STATIC_TRACK, TEXT("The cd is stopped"));

break;

case IDC_BUTTON_NEXT_TRACK:

CDFunction("status cdaudio length");
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PLAY), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PAUSE), TRUE) ;
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_STOP), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_NEXT_TRACK), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PREV_TRACK), TRUE);

MCI_TMSF_TRACK(track);
SetDlgItemText(hDlg, IDC_STATIC_TRACK, TEXT("The next track"));
break;
case IDC_BUTTON_PREV_TRACK:



CDFunction("status cdaudio length");
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PLAY), FALSE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PAUSE), TRUE) ;
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_STOP), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_NEXT_TRACK), TRUE);
EnableWindow (GetDlgItem (hDlg, IDC_BUTTON_PREV_TRACK), TRUE);

MCI_TMSF_TRACK(track);
SetDlgItemText(hDlg, IDC_STATIC_TRACK, TEXT("The prev track"));
break;

}
return TRUE;
}
return FALSE;
}

int getPixelsFromPtSize(HDC hdc, int ptSize)
{
return -MulDiv(22,GetDeviceCaps(hdc,LOGPIXELSY),72);
}