mycd.cpp

来自「Visual_C++.NET实用编程百例」· C++ 代码 · 共 120 行

CPP
120
字号
#include "StdAfx.h"
#include ".\mycd.h"

CMyCD::CMyCD(void)
{
	m_Status = Closed;
}

CMyCD::~CMyCD(void)
{
}

// 获取CD曲目信息
CString CMyCD::GetTrackInfo(HWND hWnd)
{
	char retBuf[60],trackDesc[60];
	DWORD numTrack,track;
	MCIERROR mciError;
	CString m_return;
	if(m_Status!=Closed)
		mciSendString("Open CDaudio",NULL,0,NULL);
	mciError=mciSendString("Open CDaudio",retBuf,sizeof(retBuf),NULL);
	if(mciError==0)
	{
		m_Status=Opened;
		mciError=mciSendString("Stauts CDaudio number of tracks",retBuf,sizeof(retBuf),NULL);
		if(mciError==0)
		{
			mciError=mciSendString("Set CDaudio time format TMSF",NULL,0,NULL);
			numTrack=atoi(retBuf);
			for(track=1;((mciError==0)&&(track<=numTrack));track++)
			{
				wsprintf(trackDesc,"Status CDaudio length track %d ",track);
				mciError=mciSendString(trackDesc,retBuf,sizeof(retBuf),NULL);
				if(mciError==0)
				{
					wsprintf(buf,"Track %02ld [%s]",track,retBuf);
					m_return="成功获取曲目信息";
					list[track-1].SetString (buf);
				}
				else
				{
					mciGetErrorString(mciError,buf,sizeof(buf));
					m_return.SetString (buf,sizeof(buf));
				}
			}
		}
		mciSendString("Close CDaudio",NULL,0,NULL);
	}
	return m_return;
}

// 播放
CString CMyCD::Play(DWORD TrackID, HWND hWnd)
{
	DWORD numTrack;
	MCIERROR mciError=0;
	CString m_return;
	if(TrackID==LB_ERR)
		m_return="请选择音轨";
	if(m_Status==Closed)
		mciError=Open();
	if(mciError==0)
	{
		mciError=mciSendString("Set CDaudio time format TMSF",NULL,0,NULL);
		mciError=mciSendString("Stauts CDaudio number of tracks",buf,sizeof(buf),NULL);
		numTrack=atoi(buf);
		TrackID++;
		if(TrackID<numTrack)
			wsprintf(buf,"Play CDaudio from %ld to %ld notify ",TrackID,TrackID+1);
		else
            wsprintf(buf,"Play CDaudio form %ld notify",TrackID);
		mciSendString(buf,NULL,0,hWnd);
		m_Status=Played;
		if(mciError==0)
		{
			mciGetErrorString(mciError,buf,sizeof(buf));
			m_return.SetString (buf,sizeof(buf));
			m_return+=",已经关闭";
			mciSendString("Close CDaudio",NULL,0,hWnd);
			m_Status=Closed;
		}
		else
			m_return="正在播放";
	}
	else
	{
		mciGetErrorString(mciError,buf,sizeof(buf));
		m_return.SetString (buf,sizeof(buf));
	}
	return m_return;
}

// 停止播放
CString CMyCD::Stop(HWND hWnd)
{
	HWND hWndStop;
	MCIERROR mciError;
	CString m_return;
	mciError=mciSendString("Stop CDaudio",NULL,0,NULL);
	m_Status=Stoped;
	if(mciError==0)
	{
		mciGetErrorString(mciError,buf,sizeof(buf));
		m_return.SetString (buf,sizeof(buf));
	}
	else
		m_return="停止播放";	
	return m_return;
}



// 打开设备
DWORD CMyCD::Open(void)
{
	m_Status=Opened;
	return mciSendString("Open CDaudio",buf,sizeof(buf),NULL);
}

⌨️ 快捷键说明

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