📄 mcimp3.cpp
字号:
// MCIMP3.cpp: implementation of the MCIMP3 class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "MCIMP3.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
MCIMP3::MCIMP3()
{ //初始化数据成员
m_wID = -1;
m_dwLength = 0;
}
MCIMP3::~MCIMP3()
{
MCIClose();
}
DWORD MCIMP3::MCIOpen(CString &strPath)
{ //打开MP3文件
//用mci命令打开lpstrPath指示的MP3文件
//返回mci命令的错误信息
MCI_OPEN_PARMS mciOP;
DWORD dwReturn;
//由mci判断文件类型
mciOP.lpstrDeviceType=NULL;
mciOP.lpstrElementName=strPath;
dwReturn=mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_WAIT | MCI_OPEN_SHAREABLE,
(DWORD)(LPVOID)&mciOP);
if (dwReturn==0)
{ m_wID=mciOP.wDeviceID;
if (this->MCIGetLength(&m_dwLength)!=0)
m_dwLength=0;
}
else
m_wID=NULL;
return dwReturn;
}
DWORD MCIMP3::MCIClose()
{ //关闭当前打开的MP3文件
//用mci命令关闭当前打开的MP3文件
//返回mci命令的错误信息
MCI_GENERIC_PARMS mciGP;
return mciSendCommand(m_wID, MCI_CLOSE, MCI_NOTIFY|MCI_WAIT,
(DWORD)(LPVOID)&mciGP);
}
DWORD MCIMP3::MCIPlay()
{ //播放当前的MP3文件
//用mci命令播放已打开(当前)的MP3文件
//返回mci命令的错误信息
MCI_PLAY_PARMS mciPP;
//mciPP.dwCallback=(DWORD)GetSafeHwnd();
return mciSendCommand(m_wID, MCI_PLAY, MCI_NOTIFY,
(DWORD)(LPVOID)&mciPP);
}
DWORD MCIMP3::MCIPause()
{ //暂停播放
//用mci命令暂停播放
//返回mci命令的错误信息
MCI_GENERIC_PARMS mciGP;
return mciSendCommand(m_wID, MCI_PAUSE, MCI_NOTIFY|MCI_WAIT,
(DWORD)(LPVOID)&mciGP);
}
DWORD MCIMP3::MCIResume()
{ //恢复播放
//用mci命令恢复播放
//返回mci命令的错误信息
MCI_GENERIC_PARMS mciGP;
return mciSendCommand(m_wID, MCI_RESUME, MCI_NOTIFY|MCI_WAIT,
(DWORD)(LPVOID)&mciGP);
}
DWORD MCIMP3::MCIStop()
{ //停止播放
//用mci命令停止播放(效果与Pause相同)
//返回mci命令的错误信息
MCI_GENERIC_PARMS mciGP;
return mciSendCommand(m_wID, MCI_STOP, MCI_NOTIFY|MCI_WAIT,
(DWORD)(LPVOID)&mciGP);
}
DWORD MCIMP3::MCISeekTo(DWORD dwTo)
{ //跳到dwTo指示的位置,单位为秒
//(含参数检查)
//用mci命令跳到dwTo指示的位置,单位为秒
//返回mci命令的错误信息
DWORD dwReturn;
if (dwTo>0 && dwTo<m_dwLength)
{ MCI_SEEK_PARMS mciSP;
mciSP.dwTo=dwTo*1000;
dwReturn = mciSendCommand(m_wID, MCI_SEEK, MCI_WAIT|MCI_NOTIFY|MCI_TO,
(DWORD)(LPVOID)&mciSP);
}else if (dwTo>=m_dwLength)
dwReturn = MCISeekToEnd();
else
dwReturn = MCISeekToStart();
return dwReturn;
}
DWORD MCIMP3::MCISeekToStart()
{ //跳到当前MP3文件开始处
//用mci命令跳到当前MP3文件开始处
//返回mci命令的错误信息
MCI_SEEK_PARMS mciSP;
return mciSendCommand(m_wID, MCI_SEEK, MCI_WAIT|MCI_NOTIFY|MCI_SEEK_TO_START,
(DWORD)(LPVOID)&mciSP);
}
DWORD MCIMP3::MCISeekToEnd()
{ //跳到当前MP3文件末尾处
//用mci命令跳到当前MP3文件末尾处
//返回mci命令的错误信息
MCI_SEEK_PARMS mciSP;
return mciSendCommand(m_wID, MCI_SEEK, MCI_WAIT|MCI_NOTIFY|MCI_SEEK_TO_END,
(DWORD)(LPVOID)&mciSP);
}
DWORD MCIMP3::MCIGetLength(DWORD *dwLength)
{ //取得当前打开的MP3文件的长度,单位为秒
//用mci命令取得当前打开的MP3文件的长度,单位为秒,用dwLength返回
//返回mci命令的错误信息
MCI_STATUS_PARMS mciSP;
mciSP.dwItem=MCI_STATUS_LENGTH;
DWORD dwReturn=mciSendCommand(m_wID, MCI_STATUS, MCI_STATUS_ITEM,
(DWORD)(LPVOID)&mciSP);
if (dwReturn==0)
*dwLength=mciSP.dwReturn/1000;
return dwReturn;
}
DWORD MCIMP3::MCIGetPos(DWORD *dwPos)
{ //取得当前打开的MP3文件的当前位置,单位为秒
//用mci命令取得当前打开的MP3文件的当前位置,单位为秒,用dwPos返回
//返回mci命令的错误信息
MCI_STATUS_PARMS mciSP;
mciSP.dwItem=MCI_STATUS_POSITION;
DWORD dwReturn=mciSendCommand(m_wID, MCI_STATUS, MCI_STATUS_ITEM,
(DWORD)(LPVOID)&mciSP);
if (dwReturn==0)
*dwPos=mciSP.dwReturn/1000;
return dwReturn;
}
DWORD MCIMP3::MCISetMute(BOOL bMute)
{ //设置静音或取消静音
//用mci命令设置静音(bMute=true)或取消静音(bMute=false)
//返回mci命令的错误信息
MCI_SET_PARMS mciSP;
mciSP.dwAudio=MCI_SET_AUDIO_ALL;
DWORD dwFlags;
if (bMute)
dwFlags=MCI_WAIT|MCI_SET_AUDIO|MCI_SET_OFF;
else
dwFlags=MCI_WAIT|MCI_SET_AUDIO|MCI_SET_ON;
return mciSendCommand(m_wID, MCI_SET, dwFlags,
(DWORD)(LPVOID)&mciSP);
}
BOOL MCIMP3::MCIIsPlaying()
{ //返回是否正在播放
//用mci命令询问是否正在播放
//返回是否正在播放
MCI_STATUS_PARMS mciSP;
mciSP.dwItem=MCI_STATUS_MODE;
DWORD dwReturn=mciSendCommand(m_wID, MCI_STATUS, MCI_STATUS_ITEM,
(DWORD)(LPVOID)&mciSP);
if (dwReturn==0)
if (mciSP.dwReturn==MCI_MODE_PLAY)
return true;
return false;
}
BOOL MCIMP3::MCIIsOpened()
{ //是否有MP3文件打开
//用mci命令询问有否文件打开
//返回有否文件打开
MCI_STATUS_PARMS mciSP;
mciSP.dwItem=MCI_STATUS_MODE;
DWORD dwReturn=mciSendCommand(m_wID, MCI_STATUS, MCI_STATUS_ITEM,
(DWORD)(LPVOID)&mciSP);
if (dwReturn==(DWORD)0)
if (mciSP.dwReturn==MCI_MODE_OPEN ||
mciSP.dwReturn==MCI_MODE_PLAY ||
mciSP.dwReturn==MCI_MODE_PAUSE ||
mciSP.dwReturn==MCI_MODE_STOP ||
mciSP.dwReturn==MCI_MODE_SEEK
)
return true;
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -