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 + -
显示快捷键?