📄 cdaudio.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 + -