⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cdaudio.cpp

📁 这是一个VCD播放器的程序
💻 CPP
字号:
// CDAudio.cpp: implementation of the CCDAudio class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "EX_Cdplayer01.h"
#include "CDAudio.h"
#include "mmsystem.h"		//"mmsystem.h"为系统多媒体头文件

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCDAudio::CCDAudio()
{
m_bOpened = m_bPaused = m_bPlaying = FALSE;
m_wDeviceID = 0;

}

CCDAudio::~CCDAudio()
{
 Close();
}

BOOL CCDAudio::Open()
{
if(!m_bOpened)
	  {
		m_bOpened = m_bPaused = m_bPlaying = FALSE;//设置成员变量值
		m_wDeviceID = 0; 

		MCI_OPEN_PARMS OpenParms;
		OpenParms.lpstrDeviceType = (LPCSTR) MCI_DEVTYPE_CD_AUDIO;
		OpenParms.wDeviceID = 0;
		if (mciSendCommand (NULL, MCI_OPEN, MCI_WAIT | MCI_OPEN_TYPE |
 MCI_OPEN_TYPE_ID | MCI_OPEN_SHAREABLE, (DWORD)(LPVOID) &OpenParms))
		{
		   return FALSE;
		}
		m_wDeviceID = OpenParms.wDeviceID;
		m_bOpened = TRUE;

		MCI_SET_PARMS SetParms;
		SetParms.dwTimeFormat = MCI_FORMAT_TMSF;
		if (mciSendCommand (m_wDeviceID, MCI_SET, MCI_WAIT |
MCI_SET_TIME_FORMAT, (DWORD)(LPVOID) &SetParms))
		{
		   Close ();
		   return FALSE;
		}
		mciSendCommand (m_wDeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL);
}
return TRUE;

}

void CCDAudio::Close()
{
if (m_bOpened)
{
		if (m_bPlaying || m_bPaused)
		{
		  mciSendCommand (m_wDeviceID, MCI_STOP, NULL, NULL);
		}
		mciSendCommand (m_wDeviceID, MCI_CLOSE, MCI_WAIT, NULL);

		m_bOpened = m_bPaused = m_bPlaying = FALSE;
		m_wDeviceID = 0;
	  }

}

BOOL CCDAudio::Play()
{
if (!m_bOpened)
{
		Open ();
}
if (m_bOpened)
	  {
		MCI_PLAY_PARMS PlayParms;
		PlayParms.dwCallback = NULL;
		if (mciSendCommand (m_wDeviceID, MCI_PLAY, 0,
 (DWORD)(LPVOID) &PlayParms))
		{
		  return FALSE;
		}

		m_bPaused = FALSE;
		m_bPlaying = TRUE;
		return TRUE;
}
return FALSE;

}

void CCDAudio::Stop()
{
if (m_bOpened && m_bPlaying)
{
		mciSendCommand (m_wDeviceID, MCI_STOP, MCI_WAIT, NULL);
		mciSendCommand (m_wDeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL);
		m_bPlaying = FALSE;
		m_bPaused = FALSE;
	  }

}

void CCDAudio::Pause()
{
if (m_bOpened && m_bPlaying)
{
		MCI_PLAY_PARMS PlayParms;
		if (mciSendCommand (m_wDeviceID, MCI_PAUSE, 0, 
(DWORD)(LPVOID) &PlayParms))
		{
		   return;
		}
		m_bPaused = TRUE;
}

}

int CCDAudio::GetCurrentTrack()
{
if (m_bOpened)
	  {
		MCI_STATUS_PARMS StatusParms;
		StatusParms.dwItem = MCI_STATUS_CURRENT_TRACK;
		if (mciSendCommand (m_wDeviceID, MCI_STATUS, MCI_WAIT |
 MCI_STATUS_ITEM, (DWORD)(LPVOID) &StatusParms))
		{
		  return -1;
		}

		return MCI_TMSF_TRACK (StatusParms.dwReturn);
}
return -1;

}

int CCDAudio::GetTotalTracks()
{
if (m_bOpened)
	  {
		// Save the total length
		MCI_STATUS_PARMS StatusParms;
		StatusParms.dwItem = MCI_STATUS_NUMBER_OF_TRACKS;
		if (mciSendCommand (m_wDeviceID, MCI_STATUS, MCI_WAIT |
 MCI_STATUS_ITEM, (DWORD)(LPVOID) &StatusParms))
		{
		  return -1;
		}
		return MCI_TMSF_TRACK (StatusParms.dwReturn);
}
return -1;

}

BOOL CCDAudio::SeekTo(int nTrack)
{
if (m_bOpened)
	  {
		MCI_SEEK_PARMS SeekParms;
		SeekParms.dwTo =nTrack;
		if (m_bPlaying && !m_bPaused)
		{
		   mciSendCommand (m_wDeviceID, MCI_PAUSE, 0, NULL);
		}
		if (mciSendCommand (m_wDeviceID, MCI_SEEK, MCI_TO | MCI_WAIT,
 (DWORD)(LPVOID) &SeekParms))
		{
		  return FALSE;
		}
		if (m_bPlaying && !m_bPaused)
		{
		  Play();
		}
		return TRUE;
}
return FALSE;

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -