简单音乐播放器
参考文献
[1]姬涛、周启生,《计算机程序设计基础(上册)》[Z],北京:中国传媒大学出版社,2010 [2]谭浩强,《C程序设计教程》[Z],北京:清华大学出版社,2007 [3]任哲,《MFC Windows应用程序设计(第二版)》[Z],北京:清华大学出版社,2007
12
简单音乐播放器
附 录
void CPlayerDlg::OnAhand() {
// TODO: Add your control notification handler code here isPause=true;
MCI_STATUS_PARMS mciStatusParms; MCI_PLAY_PARMS mciPlayParms;
mciStatusParms.dwItem=MCI_STATUS_POSITION;
mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);
dCurrentPosition=mciStatusParms.dwReturn;
if((m_dLength-dCurrentPosition)<=(m_dLength/16)) {
mciSendCommand(m_wDeviceID,MCI_SEEK,MCI_SEEK_TO_END,NULL);
mciSendCommand(m_wDeviceID,MCI_PLAY,0,(DWORD)(LPVOID)&mciPlayParms); } else {
mciPlayParms.dwFrom=dCurrentPosition+(DWORD)(m_dLength/16);
mciSendCommand(m_wDeviceID,MCI_PLAY,MCI_FROM,(DWORD)(LPVOID)&mciPlayParms); } }
void CPlayerDlg::OnPause() {
// TODO: Add your control notification handler code here if(isPause) {
CString strshow;
strshow=\当前歌曲:\状态:暂停\ this->SetWindowText(strshow);
GetDlgItem(IDC_PAUSE)->SetWindowText(\暂停\ isPause=FALSE;
MCI_GENERIC_PARMS mciPause;
mciSendCommand(m_wDeviceID,MCI_PAUSE,0,(DWORD)(LPVOID)&mciPause); }
13
简单音乐播放器
else {
CString strshow;
strshow=\当前歌曲:\状态:播放\ this->SetWindowText(strshow);
GetDlgItem(IDC_PAUSE)->SetWindowText(\播放\ isPause=TRUE;
if(strFileExt==\{
MCI_STATUS_PARMS mciStatusParms; MCI_PLAY_PARMS mciPlayParms;
mciStatusParms.dwItem=MCI_STATUS_POSITION;
mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms); } else {
MCI_GENERIC_PARMS mciResume;
mciSendCommand(m_wDeviceID,MCI_RESUME,0,(DWORD)(LPVOID)&mciResume); } } }
void CPlayerDlg::OnPlay() {
// TODO: Add your control notification handler code here CString strshow;
strshow=\当前歌曲:\\状态:播放\ this->SetWindowText(strshow); isPause=true;
SetTimer(1,33,NULL);
mciSendCommand(m_wDeviceID,MCI_CLOSE,0,NULL); MCI_OPEN_PARMS mciOpen; MCI_PLAY_PARMS mciPlay;
mciOpen.lpstrElementName=strFileName.GetBuffer(strFileName.GetLength());
mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen);
m_wDeviceID=mciOpen.wDeviceID; MCI_STATUS_PARMS mciStatusParms;
mciStatusParms.dwItem=MCI_STATUS_LENGTH;
mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_WAIT|MCI_STATUS_ITEM,(D
14
简单音乐播放器
WORD)(LPVOID)&mciStatusParms);
m_dLength=mciStatusParms.dwReturn;
mciSendCommand(m_wDeviceID,MCI_PLAY,0,(DWORD)(LPVOID)&mciPlay); m_position.SetRange(0,m_dLength); m_position.SetPos(0); }
void CPlayerDlg::OnNext() {
// TODO: Add your control notification handler code here currentcursel++;
if(currentcursel==m_playlist.GetCount()) {
currentcursel=0; } else
m_playlist.GetText(currentcursel,strFileName); m_playlist.SetFocus();
m_playlist.SetCurSel(currentcursel); OnPlay(); }
void CPlayerDlg::OnBack() {
// TODO: Add your control notification handler code here isPause=true;
MCI_STATUS_PARMS mciStatusParms; MCI_PLAY_PARMS mciPlayParms;
mciStatusParms.dwItem=MCI_STATUS_POSITION;
mciSendCommand(m_wDeviceID,MCI_STATUS,MCI_STATUS_ITEM,(DWORD)(LPVOID)&mciStatusParms);
dCurrentPosition=mciStatusParms.dwReturn; if(dCurrentPosition<=(m_dLength/16)) {
mciSendCommand(m_wDeviceID,MCI_SEEK,MCI_SEEK_TO_START,NULL);
mciSendCommand(m_wDeviceID,MCI_PLAY,0,(DWORD)(LPVOID)&mciStatusParms); } else {
mciPlayParms.dwFrom=dCurrentPosition-(DWORD)(m_dLength/16);
mciSendCommand(m_wDeviceID,MCI_PLAY,MCI_FROM,(DWORD)(LPVOID)&mciP
15
简单音乐播放器
layParms); } }
16