MFC_windows media player控件的使用(VS2013 )

声明:
参考博客:
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);
}
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值