MFC_windows media player控件的使用(VS2013 )

来源:互联网 发布:交通意外事故数据 编辑:程序博客网 时间:2024/06/10 20:28

声明:
参考博客:
http://blog.csdn.net/akof1314/article/details/4900040
http://blog.csdn.net/akof1314/article/details/4900244
http://blog.csdn.net/akof1314/article/details/4939553

下面,将具体介绍完整的流程:

一、新建一个基于对话框的MFC项目

二、在对话框上,右键 ->”插入ActiveX控件” -> “Windows Media Player” ->完成。
(若没有,则选择 “toolbox”-> “choose items” -> “COM Components” -> “windows media player” ->打勾)
这里写图片描述

三、添加类
“项目”->“添加类”-> “ActiveX控件中的MFC类”->“添加”
这里写图片描述
然后,发现找不到Windows Media Player这个控件,解决办法:
这里写图片描述
(*注意检查CWMPPlayer4这个类是派生自CWnd,否则会出现错误。)
添加好CWMPPlayer4之后,按照同样的方法再添加其他的类,出现错误:

这里写图片描述
解决办法:
这里写图片描述

四、下面就开始修改代码了:
首先,声明控件变量
这里写图片描述
然后,关联控件与变量
这里写图片描述
最后,

m_player.put_URL(_T("文件路径"));//大功告成。

五、若要对控件进行控制,即可采用相同的方法,这里就贴上参考的博客上的代码:

// TestDlg.h : 头文件  //  #pragma once  #include "afxwin.h"  #include "CWMPPlayer4.h"     //播放头文件  #include "CWMPControls.h"   //控制头文件  #include "CWMPSettings.h"   //设置头文件  #include "CWMPMedia.h"      //媒体头文件  #include "afxcmn.h"  // CTestDlg 对话框  class CTestDlg : public CDialog  {  // ······在这里省略  public:      CWMPPlayer4 m_Player;    //播放地址关联      CWMPControls m_control;  //控制按钮关联      CWMPSettings m_setting;   //设置按钮关联      CWMPMedia m_media;  //媒体      CProgressCtrl m_progress;  //进度条      };  
// TestDlg.cpp : 实现文件void CTestDlg::DoDataExchange(CDataExchange* pDX){    CTestDlg::DoDataExchange(pDX);    //**********************************************    DDX_Control(pDX, IDC_OCX1, m_Player);    DDX_Control(pDX, IDC_PROGRESS1, m_progress);}BOOL CTestDlg::OnInitDialog(){    //·········省略    m_control=static_cast<CWMPControls>(m_Player.get_controls());    m_setting=m_Player.get_settings();      return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE}void CTestDlg::OnBnClickedButton1(){       m_control.play();  //播放}void CTestDlg::OnBnClickedButton6(){       CString fileName;    CFileDialog fileDialog( TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("音频、视频文件(*.*)|*.*||"),this);    if (fileDialog.DoModal() == IDOK)    {        fileName=fileDialog.GetPathName();        m_Player.put_URL(fileName);   //打开播放    }     m_media=static_cast<CWMPMedia>(m_Player.newMedia(fileName));    m_progress.SetRange(0,(int)m_media.get_duration());  //媒体总长度    m_progress.SetPos(0);   }void CTestDlg::OnBnClickedButton2(){       m_control.pause();  //暂停}void CTestDlg::OnBnClickedButton3(){       m_control.stop();        //停止}void CTestDlg::OnBnClickedButton4(){       m_control.fastForward();   //快进}void CTestDlg::OnBnClickedButton5(){       m_control.fastReverse();   //快退}void CTestDlg::OnBnClickedButton7(){       m_Player.put_fullScreen(1);   //全屏}void CTestDlg::OnBnClickedButton8(){       m_setting.put_volume(m_setting.get_volume()-10);   //音量减少}void CTestDlg::OnBnClickedButton9(){       m_setting.put_volume(m_setting.get_volume()+10);  //音量增加}void CTestDlg::PlayStateChangeOcx1(long NewState){       if (NewState==3)                //播放状态时, 开启定时器        SetTimer(1,1000,NULL);      else if (NewState==1)             //停止时, 关闭定时器, 进度条回0    {        m_progress.SetPos(0);        KillTimer(1);    }    else        KillTimer(1);}void CTestDlg::OnTimer(UINT_PTR nIDEvent){    // TODO: 在此添加消息处理程序代码和/或调用默认值    if (nIDEvent != 1)           return;    m_progress.SetPos(m_progress.GetPos()+1);    CDialog::OnTimer(nIDEvent);}
0 0
原创粉丝点击