c++编写音乐播放器

2,070 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

今天用c++代码编写一个音乐播放器。这是基于MFC绘制一个图形窗口 ,并添加相应的Button按键作为功能按键,添加Slider Control滑动控件作为音量控制。

效果如下:

image.png

void C音乐播放器Dlg::OnBnClickedOpen()
{
	// TODO:  在此添加控件通知处理程序代码
	CFileDialog dlg(TRUE);
	dlg.DoModal();

	//获取选择的文件的路径
	CString strmusicPath = dlg.GetPathName();

	//1. 关闭上一个音乐
	//多媒体设备接口(MCI)
	mciSendCommand(m_DeviceID, MCI_CLOSE, 0, 0);


	//2. 打开音乐文件
	MCI_OPEN_PARMS mciopenparms;
	mciopenparms.lpstrElementName = strmusicPath;
	MCIERROR mciError;
	mciError = mciSendCommand(NULL, MCI_OPEN, MCI_OPEN_ELEMENT | MCI_WAIT, (DWORD)&mciopenparms);
	if (mciError)//mciError为真时,说明打开失败
	{
		wchar_t szErrorMsg[256];
		mciGetErrorString(mciError, szErrorMsg, 256);//获取错误信息
		AfxMessageBox(szErrorMsg);//弹出错误信息
		return;
	}
	m_DeviceID = mciopenparms.wDeviceID;//
}

这是选择多媒体音乐文件的按钮,点击之后从文件路径中选择打开相应的音乐。

////播放
void C音乐播放器Dlg::OnBnClickedPlay()
{
	// TODO:  在此添加控件通知处理程序代码
	MCI_PLAY_PARMS mcipalyparms;
	mcipalyparms.dwCallback = NULL;
	mcipalyparms.dwFrom = 0;//从头开始播放
	mciSendCommand(m_DeviceID, MCI_PLAY, MCI_FROM | MCI_NOTIFY, (DWORD)&mcipalyparms);
}

这是点击了开始播放按钮,它响应的动作是从头开始播放。

void C音乐播放器Dlg::OnBnClickedPause()
{
	// TODO:  在此添加控件通知处理程序代码
	CString str;
	GetDlgItemText(IDC_PAUSE, str);
	if (str == L"暂停")
	{
		mciSendCommand(m_DeviceID, MCI_PAUSE, 0, 0);
		SetDlgItemText(IDC_PAUSE, L"继续");
	}
	else if (str == L"继续")
	{
		mciSendCommand(m_DeviceID, MCI_RESUME, 0, 0);
		SetDlgItemText(IDC_PAUSE, L"暂停");
	}
}

这是暂停和继续播放按钮的响应。

void C音乐播放器Dlg::OnBnClickedStop()
{
	// TODO:  在此添加控件通知处理程序代码
	mciSendCommand(m_DeviceID, MCI_STOP, 0, 0);
	mciSendCommand(m_DeviceID, MCI_CLOSE, 0, 0);
}

最后这是停止播放按钮的响应。

完整的核心代码如上,也并没有想象中那么难。欢迎和我讨论有关程序的问题,也可以答疑。关注公众号:诗一样的代码,交一个朋友。