VS2012 MFC_windows media player控件的使用

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

二、在对话框上,右键-->“插入ActiveX控件”-->"Windows Media Player" -->完成。

(如没有,则选择“toolbox”-->"choose items" -->"COM Components" --> "windows media player"-->打勾)

 

三、 添加类

“项目”-->“类向导”-> “ActiveX控件中的MFC类”->“添加”

 

 四、下面就开始修改代码了:

首先,声明控件变量

然后,关联控件与变量

 

最后

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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值