Пример #1
0
//=============================================================================
// Move to the previous track
//=============================================================================
MCIERROR CCDAudio::Backward()
{			
    TCHAR szBuff2[128], szBuff3[32];

	int nCurrTrack = GetCurrentTrack();
	const int nLastTrack = GetTracksCount();

	if( (nCurrTrack == 0) || (nLastTrack == 0) || (nCurrTrack == 1) ) 
		return 0;
	
    nCurrTrack--;

	_stprintf( szBuff2, _T("status cdaudio position track %d"), nCurrTrack ); 

    m_nErrorCode = mciSendString( szBuff2, szBuff3, sizeof(szBuff3), NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return m_nErrorCode;
	}

	memset(szBuff2, 0, sizeof(szBuff2));
	
    _stprintf( szBuff2, _T("play cdaudio from %s"), szBuff3 );

	m_nErrorCode = mciSendString( szBuff2, NULL, 0, NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return m_nErrorCode;
	}

	return m_nErrorCode;
}
Пример #2
0
//***************************************************************************
BOOL MCISetVideoDrawProc( WORD wDeviceID, VIDEO_DRAWDIB_PROC lpDrawDibProc, VIDEO_DRAWDC_PROC lpDrawDCProc )
//***************************************************************************
{
DWORD dwRes;
MCI_DGV_SETVIDEO_PARMS mciSet;
DWORD dwDrawProc;

if ( !wDeviceID )
	return FALSE;

lpMyDrawDibProc = lpDrawDibProc;
lpMyDrawDCProc	= lpDrawDCProc;

if ( !lpMyDrawDibProc && !lpMyDrawDCProc )
	dwDrawProc = NULL;
else
	dwDrawProc = (DWORD)MCIDrawProc;

mciSet.dwValue = dwDrawProc; //MakeProcInstance( lpDrawProc, GetApp()->GetInstance() );
mciSet.dwItem = MCI_AVI_SETVIDEO_DRAW_PROCEDURE;

if ( (dwRes = mciSendCommand( wDeviceID, MCI_SETVIDEO,
		(DWORD)MCI_DGV_SETVIDEO_ITEM | MCI_DGV_SETVIDEO_VALUE,
		(DWORD)(LPMCI_DGV_SETVIDEO_PARMS)&mciSet )) )
	{
	MCIError(dwRes);
	return FALSE;
	}

return TRUE;
}
Пример #3
0
//=============================================================================
// Stop playing CD Audio
//=============================================================================
MCIERROR CCDAudio::Stop()
{
    m_nErrorCode = mciSendString( _T("stop cdaudio"), NULL, 0, NULL );
	// handle error
	if( m_nErrorCode != 0 ){
		MCIError( m_nErrorCode );
		return m_nErrorCode;
	}

	m_nErrorCode = mciSendString( _T("seek cdaudio to start"), NULL, 0, NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return m_nErrorCode;
	}

	return m_nErrorCode;
}
Пример #4
0
//=============================================================================
// Pause playing CD Audio
//=============================================================================
MCIERROR CCDAudio::Pause()
{  
    m_nErrorCode = mciSendString( _T("pause cdaudio"), NULL, 0, NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return m_nErrorCode;
	}

	return m_nErrorCode;
}
Пример #5
0
//=============================================================================
// Return the current track number
//=============================================================================
int CCDAudio::GetCurrentTrack()
{
	TCHAR szBuff[16];
   
	m_nErrorCode = mciSendString( _T("status cdaudio current track"), szBuff, sizeof(szBuff), NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return 0;
	}

	return ATOI(szBuff);
}
Пример #6
0
//=============================================================================
// Return the count of tracks
//=============================================================================
int CCDAudio::GetTracksCount()
{
	TCHAR szBuff[16];
	
	m_nErrorCode = mciSendString( _T("status cdaudio number of tracks"), szBuff, sizeof(szBuff), NULL );

	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return 0;
	}

    return ATOI(szBuff); 
}
Пример #7
0
//=============================================================================
// Move to the next track
//=============================================================================
MCIERROR CCDAudio::Forward()
{   		
    TCHAR szBuff2[128], szBuff3[32];
	
    int nCurrTrack = GetCurrentTrack();
	const int nLastTrack = GetTracksCount();
	
	// now the current track is the last track
	if( (nCurrTrack == nLastTrack) || (nLastTrack == 0) ) 
		return 0;

	// increment track position	
    nCurrTrack++;

	// form the command string
	_stprintf( szBuff2, _T("status cdaudio position track %d"), nCurrTrack ); 

	// send the command string
    m_nErrorCode = mciSendString( szBuff2, szBuff3, sizeof(szBuff3), NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return m_nErrorCode;
	}

	memset(szBuff2, 0, sizeof(szBuff2));
	
	// form the command string
    _stprintf( szBuff2, _T("play cdaudio from %s"), szBuff3 );

	// send the command string
	m_nErrorCode = mciSendString( szBuff2, NULL, 0, NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return m_nErrorCode;
	}

	return m_nErrorCode;
}
Пример #8
0
//=============================================================================
// Start playing CD Audio on given position
//=============================================================================
MCIERROR CCDAudio::Play(const int nPos)
{
	TCHAR szBuff[128];

	// form the connection string
	_stprintf( szBuff, _T("play cdaudio from %02d:%02d:00"), (nPos / 60), (nPos % 60) );
	// send the command string
	m_nErrorCode = mciSendString( szBuff, NULL, 0, NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return m_nErrorCode;
	}

	return m_nErrorCode;
}
Пример #9
0
//=============================================================================
// Return the total tracks length
//=============================================================================
int CCDAudio::GetLenghtAllTracks()
{
	TCHAR szBuff[16];
	TCHAR min[3], sec[3];
    m_nErrorCode = 0;

	m_nErrorCode = mciSendString( _T("status cdaudio length"), szBuff, sizeof(szBuff), NULL );
	if( m_nErrorCode != 0 ){ 
		MCIError( m_nErrorCode ); 
		return 0;
	}

	STRNCPY( min, szBuff, 2 );
    STRNCPY( sec, (szBuff + 3), 2 );

	return ((ATOI(min) * 60) + ATOI(sec));
}
Пример #10
0
//=============================================================================
// Return the current track position in seconds
//=============================================================================
int CCDAudio::GetCurrentPos()
{
	if( IsMediaInsert() )
	{
		TCHAR szBuff[16];
		TCHAR min[3], sec[3];
		m_nErrorCode = 0;

		m_nErrorCode = mciSendString( _T("status cdaudio position"), szBuff, sizeof(szBuff), NULL );
		if( m_nErrorCode != 0 ){ 
			MCIError( m_nErrorCode ); 
			return 0;
		}

		STRNCPY( min, szBuff, 2 );
		STRNCPY( sec, (szBuff + 3), 2 );

		return ((ATOI(min) * 60) + ATOI(sec));
	}

	return 0;
}