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

📄 waveplayer.cpp

📁 又是一个新的CD播放器的代码,有不错的学习效果
💻 CPP
字号:
// WavePlayer.cpp: implementation of the CWavePlayer class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "MyMediaPlayer.h"
#include "WavePlayer.h"

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

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

CWavePlayer::CWavePlayer()
{
	m_nDeviceID  = 0;
	m_nElementID = 0;

	m_IsPlay = FALSE;
}

CWavePlayer::~CWavePlayer()
{
	if(m_nElementID) {
		Stop();
	}

	if(m_nDeviceID) {
		CloseDevice();
	}
}

DWORD CWavePlayer::OpenDevice()
{
	DWORD dwResult = 0;

	if(!m_nDeviceID) {
		MCI_OPEN_PARMS mciOpenParms;
		mciOpenParms.lpstrDeviceType = (LPSTR)MCI_DEVTYPE_WAVEFORM_AUDIO;

		//open device
		dwResult = mciSendCommand(NULL,MCI_OPEN,
			MCI_OPEN_TYPE|MCI_OPEN_TYPE_ID|MCI_WAIT,
			(DWORD)(LPVOID)&mciOpenParms);
		m_nDeviceID = mciOpenParms.wDeviceID;
		//if(dwResult) DisplayErrorMsg(dwResult);
	}

	return dwResult;
}

DWORD CWavePlayer::CloseDevice()
{
	DWORD dwResult = 0;
	if(m_nDeviceID) {
		//close device
		dwResult = mciSendCommand(m_nDeviceID,MCI_CLOSE,NULL,NULL);

		if(dwResult) {
			//DisplayErrorMsg(dwResult);
		}
		else {
			m_nDeviceID = 0;
		}
	}
	return dwResult;
}

DWORD CWavePlayer::Play(CWnd *pWnd, LPCSTR pFileName)
{
	MCI_OPEN_PARMS mciOpenParms;
	memset(&mciOpenParms,0,sizeof(MCI_OPEN_PARMS));

	//
	mciOpenParms.lpstrElementName = pFileName;

	//
	DWORD dwResult = mciSendCommand(m_nDeviceID,MCI_OPEN,
		MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpenParms);

	if(dwResult) {
		//DisplayErrorMsg(dwResult);
	}
	else {
		//
		m_nElementID = mciOpenParms.wDeviceID;
		MCI_PLAY_PARMS mciPlayParms;
		//
		mciPlayParms.dwCallback = (DWORD)pWnd->GetSafeHwnd();
		//
		dwResult = mciSendCommand(m_nElementID,MCI_PLAY,MCI_NOTIFY,
			(DWORD)(LPVOID)&mciPlayParms);

		if(dwResult) {
			//DisplayErrorMsg(dwResult);
			Stop();
		}
		else {
			m_IsPlay = TRUE;
		}
	}

	return dwResult;
}

DWORD CWavePlayer::Stop()
{
	DWORD dwResult = 0;

	if(m_nElementID) {
		dwResult = mciSendCommand(m_nElementID,MCI_CLOSE,NULL,NULL);

		if(dwResult) {
			//DisplayErrorMsg(dwResult);
		}
		else {
			m_nElementID = 0;
			m_IsPlay = FALSE;
		}
	}

	return dwResult;
}

BOOL CWavePlayer::IsPlay()
{
	return m_IsPlay;
}

⌨️ 快捷键说明

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