⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playbox.cpp

📁 用EVC开发的MP3播放器,可以播放.mp3,.wma,.wav等格式的音乐文件,还具有声音调节功能.
💻 CPP
字号:
// PLAYBOX.cpp : implementation file
//

#include "stdafx.h"
#include "MyMp3sec.h"
#include "PLAYBOX.h"
#include "Delog.h"
#include "ProgCtrlVol.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// PLAYBOX dialog
PLAYBOX::PLAYBOX(CWnd* pParent /*=NULL*/)
	: CDialog(PLAYBOX::IDD, pParent)
{
	//{{AFX_DATA_INIT(PLAYBOX)
	m_sSongnamep=_T("");
	m_exe = _T("");
	//}}AFX_DATA_INIT
	PEXIT.LoadBitmaps(IDB_PEXIT);
	PPAUSE.LoadBitmaps(IDB_PPAUSE);
	PREPLAY.LoadBitmaps(IDB_PREPLAY);
	PBACK.LoadBitmaps(IDB_PBACK);
	PVOLNEC.LoadBitmaps(IDB_PVOLNEC,IDB_PVOLNECC);
	PVOLADD.LoadBitmaps(IDB_PVOLADD,IDB_PVOLADDD);
	PPICTURE.LoadBitmaps(IDB_BITMAP13);///////////////////////
	PPICTURE1.LoadBitmaps(IDB_BITMAP22);
}


void PLAYBOX::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(PLAYBOX)
	
	DDX_Control(pDX, IDC_BMPSHOWVOLUME, m_bmpvol);
	DDX_Control(pDX,IDC_BMPSHOW,m_bmpprog);

	DDX_Text(pDX, IDC_EXE, m_exe);
	DDX_Control(pDX, IDC_EXE, m_controlexe);
	//DDX_Control(pDX,IDC_EXE,m_execon);

	DDX_Text(pDX,IDC_SONAME,m_sSongnamep);
	DDX_Control(pDX,IDC_SONAME,m_sSongnamepcon);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(PLAYBOX, CDialog)
	//{{AFX_MSG_MAP(PLAYBOX)
	ON_BN_CLICKED(IDC_PEXIT, OnPexit)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_PREPLAY, OnPreplay)
	ON_BN_CLICKED(IDC_PPAUSE, OnPpause)
	ON_BN_CLICKED(IDC_PVOLNEC, OnPvolnec)
	ON_BN_CLICKED(IDC_PVOLADD, OnPvoladd)
	ON_BN_CLICKED(IDC_PBACK, OnPback)
	ON_WM_CTLCOLOR()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// PLAYBOX message handlers

void PLAYBOX::OnPexit() 
{
	// TODO: Add your control notification handler code here
	//OnOK();
	//pmed->KillTimer(1);
	//pmed->KillTimer(2);
	//pmed->m_thePlayer.Stop();
	KillTimer(2);
	KillTimer(3);
	KillTimer(4);
	PLAYBOX::OnOK();
	DestroyWindow();
	pmed->m_thePlayer.Stop ();
	//pmed->KillTimer(1);
	//pmed->ShowWindow(SW_SHOW);
	//pmed->delete pboxx;
}

void PLAYBOX::OnPback() 
{
	KillTimer(2);////////////////////////////////////////////////////
	KillTimer(3);
	KillTimer(4);
	pmed->m_thePlayer.Stop ();
	//PLAYBOX::OnOK();///////////////////////////////////////////////////
	PLAYBOX::DestroyWindow();
	//DestroyWindow();
	//pmed->KillTimer(1);
}

BOOL PLAYBOX::OnInitDialog() 
{
//MessageBox(TEXT("enter PLAYBOX"),TEXT("提示"),MB_OK);
	CDialog::OnInitDialog();
	VERIFY(PEXIT.SubclassDlgItem(IDC_PEXIT,this));
	PEXIT.SizeToContent();
	VERIFY(PPAUSE.SubclassDlgItem(IDC_PPAUSE,this));
	PPAUSE.SizeToContent();
	VERIFY(PREPLAY.SubclassDlgItem(IDC_PREPLAY,this));
	PREPLAY.SizeToContent();
	VERIFY(PBACK.SubclassDlgItem(IDC_PBACK,this));
	PBACK.SizeToContent();
	VERIFY(PVOLNEC.SubclassDlgItem(IDC_PVOLNEC,this));
	PVOLNEC.SizeToContent();
	VERIFY(PVOLADD.SubclassDlgItem(IDC_PVOLADD,this));
	PVOLADD.SizeToContent();

	VERIFY(PPICTURE.SubclassDlgItem(IDC_PPICTURE, this));///////////////////////////
	PPICTURE.SizeToContent();
	VERIFY(PPICTURE1.SubclassDlgItem(IDC_PPICTURE1, this));
	PPICTURE1.SizeToContent();

	time=new CFont;
	time->CreateFont(18,0,0,0,900,FALSE,FALSE,0,
					ANSI_CHARSET,OUT_DEFAULT_PRECIS,
					CLIP_DEFAULT_PRECIS,
					DEFAULT_QUALITY,
					DEFAULT_PITCH|FF_SWISS,
					_T("宋体"));
	m_sSongnamepcon.SetFont(time);
	m_sSongnamep="曲目名称:"+m_sSongnamep;
	m_sSongnamepcon.SetWindowText(m_sSongnamep);

	m_bmpprog.SetRange(0,songduration);//songduration
	m_bmpprog.SetStep(1);//1
	m_bmpprog.SetPos(0);
	m_bmpprog.StepIt();

	SetTimer(1,800,NULL);//200
	//SetTimer(3,1000,NULL);//1000
	//SetTimer(4,500,NULL);
	//i=0;
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void PLAYBOX::test()
{
	songduration=pmed->m_thePlayer.GetDuration();
	KillTimer(1);
	int minute=songduration/60;
	int second=songduration%60;
CString k;
k.Format(_T("%s%d"),k,minute);
CString kk;
kk.Format(_T("%s%d"),kk,second);
//MessageBox(k,TEXT("K"),MB_OK);//213
	//j.Format (_T("%s%d"),j,songduration);
//MessageBox(j,TEXT("j"),MB_OK);//179213
	//CString jj=j.Right(3);
//MessageBox(jj,TEXT("jj"),MB_OK);//213
	//GetDlgItem(IDC_EXE)->SetWindowText(_T(""));
	//GetDlgItem(IDC_EXE)->SetWindowText(j);
	//UpdateData(FALSE);
	if(second<10)
	{
		kk="0"+kk;
	}
	CString kkk="曲目长度:"+k+":"+kk;
	//m_execon.SetFont(time);
	//m_execon.SetWindowText(kkk);
//MessageBox(kkk,TEXT("kkk"),MB_OK);
	m_controlexe.SetFont(time);
	m_controlexe.SetWindowText(kkk);
	m_bmpprog.SetRange(0,songduration);//songduration
	m_bmpprog.SetStep(1);//1
	m_bmpprog.SetPos(0);
	m_bmpprog.StepIt();

	i=0;
	SetTimer(3,1000,NULL);//1000
	SetTimer(4,500,NULL);
}

void PLAYBOX::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	switch(nIDEvent)
	{
	case 1:
		test();
		//KillTimer(1);
		break;
	case 2:
		
		m_lState=pmed->m_thePlayer.GetPlayState();
		if(m_lState==0)
		{
			KillTimer(2);
		//MessageBox(TEXT("FIRST SONG OVER"),TEXT("CONMENT"),MB_OK);
			BOOL FileEnd=FindNextFile(playboxfile,&lpFileData);
			while(FileEnd!=0)
			{
			//MessageBox(TEXT("enter FileEnd"),TEXT("CONMENT"),MB_OK);
				CString wavlist;
				wavlist=lpFileData.cFileName;
				playboxWavpath=playboxdirectory+wavlist;
			//MessageBox(playboxWavpath,TEXT("playboxWavpath"),MB_OK);
				pmed->m_thePlayer.SetFileName(playboxWavpath);
				pmed->m_thePlayer.Play();
				this->m_sSongnamep=wavlist;
				this->m_sSongpath=playboxWavpath;
				//m_sSongnamep=_T("");
				//m_exe = _T("");
				//m_controlexe.ShowWindow(true);
				//m_controlexe.SetWindowText(_T(""));
				GetDlgItem(IDC_SONAME)->SetWindowText(_T(""));
				GetDlgItem(IDC_SONAME)->SetWindowText(m_sSongnamep);
			//MessageBox(m_sSongnamep,TEXT("m_sSongnamep"),MB_OK);
				SetTimer(1,500,NULL);//1000
				i=0;
				SetTimer(2,1000,NULL);
				//test();
				break;
			}
		}
		break;
		
	case 3:
		/*
		CString State=pmed->m_thePlayer.GetPlayState();
		if(State==2)
		{
			if(PPICTURE.ShowWindow(1))
			{
			PPICTURE1.ShowWindow(1);
			PPICTURE.ShowWindow(0);
			}
			else
			{
			PPICTURE.ShowWindow(1);
			PPICTURE1.ShowWindow(0);}
		}
		else
		{PPICTURE.ShowWindow(1);}
		*/
		i+=1;
		//CString progresstime;
		progresstime.Format(_T("%d"),i);
		//progresstime.Format(_T("%s%d"),progresstime,i);
		GetDlgItem(IDC_PROGRESSTIME)->SetWindowText(progresstime);
		//GetDlgItem(IDC_PROGRESSTIME)->SetWindowText(CString(i));
		m_bmpprog.StepIt();
		if(i>=songduration)
		{
			KillTimer(3);
			i=0;
		}
		break;
	case 4:
		State=pmed->m_thePlayer.GetPlayState();
		if(State==2)
		{
			if(PPICTURE.ShowWindow(1))
			{
			PPICTURE1.ShowWindow(1);
			PPICTURE.ShowWindow(0);
			}
			else
			{
			PPICTURE.ShowWindow(1);
			PPICTURE1.ShowWindow(0);}
		}
		else
		{PPICTURE.ShowWindow(1);}
		break;
	}
	CDialog::OnTimer(nIDEvent);
}

void PLAYBOX::OnPreplay() 
{
	// TODO: Add your control notification handler code here
	//KillTimer(2);
	KillTimer(3);
	pmed->m_thePlayer.Stop();
	m_bmpprog.SetPos(0);
	m_bmpprog.StepIt();
	SetTimer(3,1000,NULL);
	i=0;
	pmed->m_thePlayer.SetFileName(m_sSongpath);
	pmed->m_thePlayer.Play();
}

void PLAYBOX::OnPpause() 
{
	// TODO: Add your control notification handler code here
	int playstate=pmed->m_thePlayer.GetPlayState();
CString j;
j.Format(_T("%d"),playstate);
//MessageBox(j,TEXT("playstate"),MB_OK);
	if(playstate==2)
	{
		KillTimer(3);
		pmed->m_thePlayer.Pause();
	}
	else if(playstate==1)
	{
		SetTimer(3,1000,NULL);
		pmed->m_thePlayer.Play();
	}
}

void PLAYBOX::OnPvolnec() 
{
	// TODO: Add your control notification handler code here
	m_bmpvol.StepItt();
	pmed->vnec();

}

void PLAYBOX::OnPvoladd() 
{
	// TODO: Add your control notification handler code here
	m_bmpvol.StepIt();
	pmed->vadd();
}

void PLAYBOX::PLAYALL()
{
	//playboxdirectory="\\Temp\\";
	playboxdirectory="\\Storage Card\\";
	CString wavlist;
	//playboxfile=FindFirstFile(_T("\\Temp\\*.mp3"),&lpFileData);
	playboxfile=FindFirstFile(_T("\\Storage Card\\*.mp3"),&lpFileData);
	if(playboxfile!=INVALID_HANDLE_VALUE)
	{
	
		wavlist=lpFileData.cFileName;
		//MessageBox(wavlist,TEXT("wavlist"),MB_OK);
		//GetDlgItem(1)->SetWindowText(wavlist);
		//n++;
		playboxWavpath=playboxdirectory+wavlist;
	}
	//pmed->m_thePlayer.SetFileName(playboxWavpath);
	//pmed->m_thePlayer.Play();
	//this->m_sSongnamep=wavlist;
	//this->m_sSongpath=playboxWavpath;
	SetTimer(2,1000,NULL);
	//i=0;
}





HBRUSH PLAYBOX::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	// TODO: Change any attributes of the DC here
	if(pWnd->GetDlgCtrlID()==IDC_SONAME)
	{
		pDC->SetBkColor(RGB(200,200,200));
		pDC->SetTextColor(RGB(0,0,255));
	}

	if(pWnd->GetDlgCtrlID()==IDC_EXE)
	{
		pDC->SetBkColor(RGB(200,200,200));
		pDC->SetTextColor(RGB(255,0,0));
	}
	// TODO: Return a different brush if the default is not desired
	return hbr;
}

⌨️ 快捷键说明

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