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

📄 playdlg.cpp

📁 CE导航界面。 CE导航界面。
💻 CPP
📖 第 1 页 / 共 2 页
字号:

	
	if(isActiveTz==TRUE)
	{//停止
		isActiveTz=FALSE;
		InvalidateRect(CRect(0,0,320,240),FALSE);

		if(isPlay==TRUE)
		{//播放状态
			isPlay=FALSE;

			m_pMediaControl->Stop();

			m_pMediaControl->Release(); 
			m_pMediaControl=NULL;

			// 释放对象 
			m_pGraph-> Release();   
			// 程序结束时调用 
			m_pMediaSeeking->Release();
			g_pMediaPosition->Release();
			CoUninitialize(); 
			KillTimer(1);
		}
		else if(pauseStatus==TRUE)
		{//停止状态
			pauseStatus=FALSE;

			m_pMediaControl->Stop();

			m_pMediaControl->Release(); 
			m_pMediaControl=NULL;

			// 释放对象 
			m_pGraph-> Release();   
			// 程序结束时调用 
			m_pMediaSeeking->Release();
			g_pMediaPosition->Release();
			CoUninitialize(); 
			KillTimer(1);
		}

		curTime=0;
		totalTime=0;
	
	}
	
	if(isActiveKt==TRUE)
	{//前一首
		isActiveKt=FALSE;
		InvalidateRect(CRect(0,0,320,240),FALSE);
/*
		m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_MEDIA_TIME); // frameformat => timeformat
		m_pMediaSeeking->GetDuration(&totalTime); // get total frames count
		m_pMediaSeeking->GetCurrentPosition(&curTime);
		curTime =curTime-totalTime/10 ;//快进1/10
		if(curTime<0)
			curTime=0;
		m_pMediaSeeking->SetPositions(&curTime, AM_SEEKING_AbsolutePositioning,NULL, AM_SEEKING_NoPositioning);
		m_pMediaControl->Run(); 
*/

		if(m_pMediaControl!=NULL)
		{
			if(m_pMediaControl!=NULL && isPlay==TRUE)
			{//播放过没有停止的
				KillTimer(1);
				if(Wavpath!="")
				{
					m_pMediaControl->Stop();
					Wavpath="";
				}

				m_pMediaControl->Release(); 
				m_pMediaControl=NULL;

				// 释放对象 
				m_pGraph-> Release();   
				// 程序结束时调用 
				m_pMediaSeeking->Release();
				g_pMediaPosition->Release();

				CoUninitialize(); 
			}


			CoInitialize(NULL); 
			CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,(void **)&m_pGraph); 
			m_pGraph->QueryInterface(IID_IMediaSeeking, (void **)&m_pMediaSeeking);

			if(cursel==0)
				cursel=songNum-1;//第一首到最后一首
			else
				cursel--;//后一首歌
			m_musicList.SetCurSel(cursel);
			m_musicList.GetText(cursel,Wavpath);
			Wavpath=directory+Wavpath+".mp3";	


			m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl);
			m_pGraph-> RenderFile(Wavpath,NULL);

			m_pGraph->QueryInterface(IID_IMediaPosition,(LPVOID*)&g_pMediaPosition); 
			g_pMediaPosition->get_Duration(&g_Len);
			g_pMediaPosition->put_CurrentPosition(0);

			m_pMediaControl->Run(); 
			m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_MEDIA_TIME); // frameformat => timeformat
			m_pMediaSeeking->GetDuration(&totalTime); //得到的时间单位为100ns
			m_pMediaSeeking->GetCurrentPosition(&curTime);

			SetTimer(1,1000,NULL);

			isActiveBf=FALSE;
			isPlay=TRUE;
		}

	}
	if(isActiveKj==TRUE)
	{//后一首
		isActiveKj=FALSE;
		InvalidateRect(CRect(0,0,320,240),FALSE);

/*		m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_MEDIA_TIME); // frameformat => timeformat
		m_pMediaSeeking->GetDuration(&totalTime); // get total frames count
		m_pMediaSeeking->GetCurrentPosition(&curTime);
		curTime =curTime + totalTime/10 ;//快进1/10
		m_pMediaSeeking->SetPositions(&curTime, AM_SEEKING_AbsolutePositioning,NULL , AM_SEEKING_NoPositioning);
		m_pMediaControl->Run(); 
*/
		if(m_pMediaControl!=NULL)
		{//如果是播放过的
			if(m_pMediaControl!=NULL && isPlay==TRUE)
			{//播放过没有停止的
		//		KillTimer(1);
				if(Wavpath!="")
				{
					m_pMediaControl->Stop();
					Wavpath="";
				}

				m_pMediaControl->Release(); 
				m_pMediaControl=NULL;

				// 释放对象 
				m_pGraph-> Release();   
				// 程序结束时调用 
				m_pMediaSeeking->Release();
				g_pMediaPosition->Release();

				CoUninitialize(); 
			}


			CoInitialize(NULL); 
			CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,(void **)&m_pGraph); 
			m_pGraph->QueryInterface(IID_IMediaSeeking, (void **)&m_pMediaSeeking);

			if(cursel==songNum-1)
				cursel=0;//最后一首返回到第一首
			else
				cursel++;//后一首歌
			m_musicList.SetCurSel(cursel);
			m_musicList.GetText(cursel,Wavpath);
			Wavpath=directory+Wavpath+".mp3";	


			m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl);
			m_pGraph-> RenderFile(Wavpath,NULL);

			m_pGraph->QueryInterface(IID_IMediaPosition,(LPVOID*)&g_pMediaPosition); 
			g_pMediaPosition->get_Duration(&g_Len);
			g_pMediaPosition->put_CurrentPosition(0);

			m_pMediaControl->Run(); 

			m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_MEDIA_TIME); // frameformat => timeformat
			m_pMediaSeeking->GetDuration(&totalTime); //得到的时间单位为100ns
			m_pMediaSeeking->GetCurrentPosition(&curTime);

			SetTimer(1,1000,NULL);

			isActiveBf=FALSE;
			isPlay=TRUE;
		}

	}
	
	if(isActiveRe==TRUE)
	{//返回
		isActiveRe=FALSE;
		InvalidateRect(CRect(258,183,258+65,183+65),FALSE);
		CDialog::OnCancel();
		waveOutSetVolume(0,volumeValue_bk);  //恢复原始音量设置
		KillTimer(1);
		
		if(isPlay==TRUE || pauseStatus==TRUE)
		{//如果正在播放,或者是暂停状态
			m_pMediaControl->Stop();
			Wavpath="";
		}

		if(m_pMediaControl!=NULL)
		{//如果已经播放过的
			m_pMediaControl->Release(); 
			// 释放对象 
			m_pGraph-> Release();   
			// 程序结束时调用 
			m_pMediaSeeking->Release();
			g_pMediaPosition->Release();
			CoUninitialize(); 
		}
	}

	if(isActiveVol==TRUE)
	{//音量
		isActiveVol=FALSE;
		//waveOutSetVolume(0,0);  
		//waveOutGetVolume(0,)
		//value=(point.x-172)/75.0*100;
		//volumeValue=(DWORD)(value*0x28F5C28); 
		//::MessageBox(NULL, _T("Play   MP3 "), _T("Play   MP3 "),MB_OK);  
		//InvalidateRect(CRect(172-5,210-5,172+75+5,210+5+5),FALSE);
		InvalidateRect(CRect(187,203,246,250),FALSE);
	}

	CDialog::OnLButtonUp(nFlags, point);
}



BOOL CPlayDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();

	CString str;

	
	
	CPaintDC dc(this); // device context for painting
	CBitmap	bitmap;
	CDC     memDC;
    CFont font;
    CRect rect;	

	rect.left=172-5;
	rect.top=213-5;
	rect.right=172+5;
	rect.bottom=213+5;

	CBrush brush1(RGB(250,174,106));	//Choice adapted one color 
	dc.SelectObject(&brush1);
	dc.Ellipse(&rect);

	directory="\\Storage Card\\MP3\\";
//	directory="";

//搜索mp3格式的文件
	file=FindFirstFile(_T("\\Storage Card\\MP3\\*.mp3"),&lpFileData);
	if(file!=INVALID_HANDLE_VALUE)
	{
		wavlist=lpFileData.cFileName;
	//	Wavpath=directory+wavlist;

		int dot=wavlist.Find('.');
		wavlist=wavlist.Left(dot);
		m_musicList.AddString(wavlist);
		songNum++;
	}

	BOOL FileEnd=FindNextFile(file,&lpFileData);
	while(FileEnd!=0)
	{
		wavlist=lpFileData.cFileName;
		int dot=wavlist.Find('.');
		wavlist=wavlist.Left(dot);
		m_musicList.AddString(wavlist);
		songNum++;
		FileEnd=FindNextFile(file,&lpFileData);
	}


/*
	m_musicList.AddString(_T("aaaa"));
	m_musicList.AddString(_T("bbbb"));
	m_musicList.AddString(_T("cccc"));
	m_musicList.AddString(_T("dddd"));
	m_musicList.AddString(_T("eeee"));
	m_musicList.AddString(_T("ffff"));
	m_musicList.AddString(_T("gggg"));
	m_musicList.AddString(_T("hhhh"));
	m_musicList.AddString(_T("jjjj"));
	m_musicList.AddString(_T("kkkk"));
	m_musicList.AddString(_T("llll"));
	m_musicList.AddString(_T("mmmm"));
*/
//播放相关start
//播放相关end

	return TRUE;  
}

HBRUSH CPlayDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	if(pWnd->GetDlgCtrlID()==IDC_LIST1)
	{
	//	 pDC->SetBkColor(RGB(156,178,205));
		 
		 pDC->SetBkMode(TRANSPARENT);
		 pDC->SetTextColor(RGB(14,66,121));   
	//	 hbr =  CreateSolidBrush(RGB(156,178,205));   
	}

	// TODO: Return a different brush if the default is not desired
	return hbr;
}

BOOL CPlayDlg::OnEraseBkgnd(CDC* pDC) 
{
	// TODO: Add your message handler code here and/or call default
	
//	return CDialog::OnEraseBkgnd(pDC);
	return	-1;
}

int CPlayDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	

	return 0;
}

void CPlayDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	double pos;
	g_pMediaPosition->get_CurrentPosition(&pos);
	if(pos>=g_Len)
	{
		m_pMediaControl->Stop();
		m_pMediaControl->Release(); 
		m_pMediaControl=NULL;
		// 释放对象 
		m_pGraph-> Release();   
		// 程序结束时调用 
		m_pMediaSeeking->Release();
		g_pMediaPosition->Release();
		CoUninitialize(); 

		CoInitialize(NULL); 
		CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,(void **)&m_pGraph); 
		m_pGraph->QueryInterface(IID_IMediaSeeking, (void **)&m_pMediaSeeking);

		if(cursel==songNum-1)
			cursel=0;//最后一首返回到第一首
		else
			cursel++;//后一首歌
		m_musicList.SetCurSel(cursel);
		m_musicList.GetText(cursel,Wavpath);
		Wavpath=directory+Wavpath+".mp3";	



		m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl);
		m_pGraph-> RenderFile(Wavpath,NULL);

		m_pGraph->QueryInterface(IID_IMediaPosition,(LPVOID*)&g_pMediaPosition); 
		g_pMediaPosition->get_Duration(&g_Len);
		g_pMediaPosition->put_CurrentPosition(0);
		m_pMediaControl->Run(); 

		m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_MEDIA_TIME); // frameformat => timeformat
		m_pMediaSeeking->GetDuration(&totalTime); //得到的时间单位为100ns
		m_pMediaSeeking->GetCurrentPosition(&curTime);

	}

	m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_MEDIA_TIME); // frameformat => timeformat
	m_pMediaSeeking->GetDuration(&totalTime); //得到的时间单位为100ns
	m_pMediaSeeking->GetCurrentPosition(&curTime);
	
	InvalidateRect(CRect(20,155,300,178),FALSE);

	CDialog::OnTimer(nIDEvent);
}

void CPlayDlg::OnDblclkList() 
{
	cursel=m_musicList.GetCurSel();
	if(cursel < 0)
		return;


	if(m_pMediaControl!=NULL && isPlay==TRUE)
	{//播放过没有停止的
//		KillTimer(1);
		if(Wavpath!="")
		{
			m_pMediaControl->Stop();
			Wavpath="";
		}

		m_pMediaControl->Release(); 
		m_pMediaControl=NULL;

		// 释放对象 
		m_pGraph-> Release();   
		// 程序结束时调用 
		m_pMediaSeeking->Release();
		g_pMediaPosition->Release();
		CoUninitialize(); 
	}


	CoInitialize(NULL); 
    CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC,IID_IGraphBuilder,(void **)&m_pGraph); 
	m_pGraph->QueryInterface(IID_IMediaSeeking, (void **)&m_pMediaSeeking);

	m_musicList.GetText(cursel,Wavpath);
	Wavpath=directory+Wavpath+".mp3";

	m_pGraph->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl);
	m_pGraph-> RenderFile(Wavpath,NULL);

	m_pGraph->QueryInterface(IID_IMediaPosition,(LPVOID*)&g_pMediaPosition); 
	g_pMediaPosition->get_Duration(&g_Len);
	g_pMediaPosition->put_CurrentPosition(0);
	m_pMediaControl->Run(); 

	m_pMediaSeeking->SetTimeFormat(&TIME_FORMAT_MEDIA_TIME); // frameformat => timeformat
	m_pMediaSeeking->GetDuration(&totalTime); //得到的时间单位为100ns
	m_pMediaSeeking->GetCurrentPosition(&curTime);

	SetTimer(1,1000,NULL);


	isActiveBf=FALSE;
	isPlay=TRUE;
//	SetTimer(1,1000,NULL);
	InvalidateRect(CRect(0,0,320,240),FALSE);
}

void CPlayDlg::OnSelchangeList1() 
{
	cursel=m_musicList.GetCurSel();
	if(cursel < 0)
		return;

	m_musicList.GetText(cursel,Wavpath);
	Wavpath=directory+Wavpath+".mp3";
//	InvalidateRect(CRect(0,0,320,240),FALSE);
}

⌨️ 快捷键说明

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