Vs2015 MFC 音视频播放器

黄宁然的本家离职,留下了某项目开发,需用到MFC+Windows media player。在此整理一下。

0.环境

系统:win10
编程环境:VS2015
语言:C++
参考文献:https://it.cha138.com/php/show-4190378.html

1. 新建MFC工程

新建项目,选择vc++ -> MFC -> MFC应用程序。
在这里插入图片描述
应用程序向导里,选择“基于对话框”。其它默认。
在这里插入图片描述

2. 插入Windows media player 插件

窗口空白处,右击,选择“插入ActiveX控件”,选择“Windows media player”
在这里插入图片描述
在这里插入图片描述
添加后效果:
在这里插入图片描述

3. 添加微软的 CWMPPlayer代码包至工程中

网友提供了该代码包的下载:
链接:https://pan.baidu.com/s/15jQFdSWduAMWarr8uCX8KQ
提取码:zj4p
如果失效,请移步下载:https://download.csdn.net/download/xiaohuolong1827/87735662
下载后,添加对该目录的包含,并include如下.h文件,并将CWMPPlayer4.cpp文件,添加到工程中。
在这里插入图片描述
在这里插入图片描述

4. 新建变量,并与Windows media player控件绑定。

在对话框的.h文件中,添加变量
在这里插入图片描述

将变量m_player与上述步骤添加的 Windows media player控件绑定。在DoDataExchange函数中,添加如下语句,这里,IDC_OCX1是控件的ID。

DDX_Control(pDX, IDC_OCX1, m_player);

在这里插入图片描述
也可以通过在窗体中,右击控件,选择添加变量来完成。

5. 初始化m_control变量

可以将该条语句放在OnInitDialog函数中

m_control = static_cast<CWMPControls>(m_player.get_controls());

在这里插入图片描述

6. 添加按钮、文本框,写回调函数。

按钮包括打开、播放、暂停。
在这里插入图片描述
相应的回调:

void CmfcMediaPlayerDlg::OnBnClickedOpen()
{
	// TODO: 在此添加控件通知处理程序代码

	CString szFileFilter =
		TEXT("All File(*.*)|*.*|Mp3 File(*.mp3)|*.mp3|MPEG File(*.mpeg)|*.mpeg|Media File(*.asf)|*.asf|Video File(*.dat)|*.dat|MPGA File(*.mpga)|*.mpga|Wave File(*.wav)|*.wav|AVI File(*.avi)|*.avi|Movie File(*.mov)|*.mov|Mid File(*.mid;*,rmi)|*.mid;*.rmi|Wma File(*.wma)|*.wma||");

	CFileDialog fileDialog(TRUE, NULL, NULL, NULL, szFileFilter, this);
	if (fileDialog.DoModal() == IDOK)
	{
		CString  fileName = fileDialog.GetPathName();
		((CEdit*)GetDlgItem(IDC_EDIT_file_name))->SetWindowTextW(fileName);

	}

}
void CmfcMediaPlayerDlg::OnBnClickedPlay()
{
	// TODO: 在此添加控件通知处理程序代码
	CString  fileName;
	((CEdit*)GetDlgItem(IDC_EDIT_file_name))->GetWindowTextW(fileName);
	try 
	{	
		m_player.put_URL(fileName);
		m_control.play();
		play_flag = 1;
		((CButton*)GetDlgItem(IDC_PAUSE))->SetWindowTextW(_T("PAUSE"));
	}
	catch (...)
	{
		play_flag = 0;
		((CButton*)GetDlgItem(IDC_PAUSE))->SetWindowTextW(_T("PAUSE"));
	}
	
}
void CmfcMediaPlayerDlg::OnBnClickedPause()
{
	// TODO: 在此添加控件通知处理程序代码
	try	
	{	
		if (play_flag == 1)
		{
			m_control.pause();
			((CButton*)GetDlgItem(IDC_PAUSE))->SetWindowTextW(_T("RESUME")); 
			play_flag = 2;
		}
		else if (play_flag == 2)
		{
			m_control.play();
			play_flag = 1;
			((CButton*)GetDlgItem(IDC_PAUSE))->SetWindowTextW(_T("PAUSE"));
		}

	}
	catch (...)
	{
		play_flag = 0;
		((CButton*)GetDlgItem(IDC_PAUSE))->SetWindowTextW(_T("PAUSE"));

	}
}

运行效果:
在这里插入图片描述
对于网络链接,可直接在文本框中填入网址,如:
http://downsc.chinaz.net/files/download/sound1/201206/1638.mp3,点击播放。

7. 源码下载

源码下载移步:
https://download.csdn.net/download/xiaohuolong1827/87736600

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值