【VC学习】VC2010 Windows Media Player控件的使用技巧
2015-05-08 23:47
796 查看
声明:以下博客基于@无幻 VC2008 Windows Media Player控件的使用技巧,自行学习整理
附上原地址:/article/1899273.html
本是跟着老师选修课学习,编程都是基于MFC,手动在toolbox里面修改的,看到博主写的,还是有点难度,经过一晚上的研究,不断的解决问题,终于完成了博主123除进度条之外的功能,本人新手,谬误或理解不对的请指导,进度条再研究下。
我是以VS2010为例,对比6.0,2008有少许不同,细节截图请参照原博客。
此色为注释和个人添加
/*********************************************我是分割线***********************************/
首先,新建一个基于对话框的工程,在对话框上,右键选择”插入ActiveX控件 (Insert ActiveX Control...)“,在弹出的框中选择“Windows
Media Player ”完成;没有的可以试试,toolbox,右键,choose items,COM Components,往后翻,点击windows media player,前面的勾,选上,ok,应该就有了
然后,我们要添加相应的类,关闭对话框资源(防止误认为对话框添加类),单击“项目 ”→“添加类 ”→“ActiveX控件中的MFC类 (flag)”,弹出如下对话框,我们必须要如下顺序添加接口,否则不好关联控件。在这里我把所有的接口都添加了,大家可以依据需要而添加:
可以先看下第二条分割线的内容。
在这里的时候,添加IWMPPlayer4,没问题,但是第二部出现 “...cannot find coclass for interface...”的错误提示框,开始没有管他,后来在做播放控制的时候发现,头文件什么都添加不了,想起了这里的问题,经过一番查找,问题解决:原地址,在上面flag的位置,选择MFC
Class From TypeLib(类型库向导),添加就没有问题了,后面的控制也没问题了。
接下来,我们要添加头文件#include "CWMPPlayer4.h",然后声明控件对象,如下所示:
然后,手动关联控件,在这里控件的ID号为IDC_OCX1,大家依情况而修改,如下所示:
最后,则是测试功能的实现了,这里我只测试了下能否打开音视频,主要是要控件有没有关联正确:
好,已经绑定成功。之前一直出现不识别put_URL什么的这样就解决了。
/*********************************************我是分割线***********************************/
博主第二篇是对于找不到的,因为当时前面添加类型库了,就没有管这个了附上连接吧
/article/1899274.html
/*********************************************我是分割线***********************************/
以下是博主第三篇的内容
在上次的编写Media Player播放器后,这次我们来实现对音视频的控制,比如:播放、暂停、停止、快进、音量、进度条等等。首先我们在对话框上放置如下按钮,如图:
在对话框头文件中,添加播放器的一些头文件和声明对象。前面没有添加上的在这里的头文件包括就会出错,请返回第二条分割线
[cpp] view
plaincopy
// 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; //进度条
};
对窗体添加事件,添加一个OnTimer()事件。对Media Player添加播放改变PlayStateChange()我自己的问题就是这个PlayStateChange的添加有点问题,等研究明白再更新吧,也希望各位不吝指导。这里对于按键ID我觉得还是应该修改下,每次添加一个控件就修改下ID,这样Button123456789实在是分不出来。
[cpp] view
plaincopy
// TestDlg.cpp : 实现文件
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);
}
效果如下:
附上自己的程序
http://download.csdn.net/detail/portb/8678059
附上
Media
player控件常用属性
附上原地址:/article/1899273.html
本是跟着老师选修课学习,编程都是基于MFC,手动在toolbox里面修改的,看到博主写的,还是有点难度,经过一晚上的研究,不断的解决问题,终于完成了博主123除进度条之外的功能,本人新手,谬误或理解不对的请指导,进度条再研究下。
我是以VS2010为例,对比6.0,2008有少许不同,细节截图请参照原博客。
此色为注释和个人添加
/*********************************************我是分割线***********************************/
首先,新建一个基于对话框的工程,在对话框上,右键选择”插入ActiveX控件 (Insert ActiveX Control...)“,在弹出的框中选择“Windows
Media Player ”完成;没有的可以试试,toolbox,右键,choose items,COM Components,往后翻,点击windows media player,前面的勾,选上,ok,应该就有了
然后,我们要添加相应的类,关闭对话框资源(防止误认为对话框添加类),单击“项目 ”→“添加类 ”→“ActiveX控件中的MFC类 (flag)”,弹出如下对话框,我们必须要如下顺序添加接口,否则不好关联控件。在这里我把所有的接口都添加了,大家可以依据需要而添加:
可以先看下第二条分割线的内容。
在这里的时候,添加IWMPPlayer4,没问题,但是第二部出现 “...cannot find coclass for interface...”的错误提示框,开始没有管他,后来在做播放控制的时候发现,头文件什么都添加不了,想起了这里的问题,经过一番查找,问题解决:原地址,在上面flag的位置,选择MFC
Class From TypeLib(类型库向导),添加就没有问题了,后面的控制也没问题了。
接下来,我们要添加头文件#include "CWMPPlayer4.h",然后声明控件对象,如下所示:
然后,手动关联控件,在这里控件的ID号为IDC_OCX1,大家依情况而修改,如下所示:
最后,则是测试功能的实现了,这里我只测试了下能否打开音视频,主要是要控件有没有关联正确:
好,已经绑定成功。之前一直出现不识别put_URL什么的这样就解决了。
/*********************************************我是分割线***********************************/
博主第二篇是对于找不到的,因为当时前面添加类型库了,就没有管这个了附上连接吧
/article/1899274.html
/*********************************************我是分割线***********************************/
以下是博主第三篇的内容
在上次的编写Media Player播放器后,这次我们来实现对音视频的控制,比如:播放、暂停、停止、快进、音量、进度条等等。首先我们在对话框上放置如下按钮,如图:
在对话框头文件中,添加播放器的一些头文件和声明对象。前面没有添加上的在这里的头文件包括就会出错,请返回第二条分割线
[cpp] view
plaincopy
// 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; //进度条
};
对窗体添加事件,添加一个OnTimer()事件。对Media Player添加播放改变PlayStateChange()我自己的问题就是这个PlayStateChange的添加有点问题,等研究明白再更新吧,也希望各位不吝指导。这里对于按键ID我觉得还是应该修改下,每次添加一个控件就修改下ID,这样Button123456789实在是分不出来。
[cpp] view
plaincopy
// TestDlg.cpp : 实现文件
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);
}
效果如下:
附上自己的程序
http://download.csdn.net/detail/portb/8678059
附上
Media
player控件常用属性
属性/方法名: | 说明: |
[基本属性] | |
URL:String; | 指定媒体位置,本机或网络地址 |
uiMode:String; | 播放器界面模式,可为Full, Mini, None, Invisible |
playState:integer; | 播放状态,1=停止,2=暂停,3=播放,6=正在缓冲,9=正在连接,10=准备就绪 |
enableContextMenu:Boolean; | 启用/禁用右键菜单 |
fullScreen:boolean; | 是否全屏显示 |
[controls] | wmp.controls //播放器基本控制 |
controls.play; | 播放 |
controls.pause; | 暂停 |
controls.stop; | 停止 |
controls.currentPosition:double; | 当前进度 |
controls.currentPositionString:string; | 当前进度,字符串格式。如“00:23” |
controls.fastForward; | 快进 |
controls.fastReverse; | 快退 |
controls.next; | 下一曲 |
controls.previous; | 上一曲 |
[settings] | wmp.settings //播放器基本设置 |
settings.volume:integer; | 音量,0-100 |
settings.autoStart:Boolean; | 是否自动播放 |
settings.mute:Boolean; | 是否静音 |
settings.playCount:integer; | 播放次数 |
[currentMedia] | wmp.currentMedia //当前媒体属性 |
currentMedia.duration:double; | 媒体总长度 |
currentMedia.durationString:string; | 媒体总长度,字符串格式。如“03:24” |
currentMedia.getItemInfo(const string); | 获取当前媒体信息"Title"=媒体标题,"Author"=艺术家,"Copyright"=版权信息,"Description"=媒体内容描述,"Duration"=持续时间(秒),"FileSize"=文件大小,"FileType"=文件类型,"sourceURL"=原始地址 |
currentMedia.setItemInfo(const string); | 通过属性名设置媒体信息 |
currentMedia.name:string; | 同 currentMedia.getItemInfo("Title") |
[currentPlaylist] | wmp.currentPlaylist //当前播放列表属性 |
currentPlaylist.count:integer; | 当前播放列表所包含媒体数 |
currentPlaylist.Item[integer]; | 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia |
相关文章推荐
- VC2008 Windows Media Player控件的使用技巧
- VC2008 Windows Media Player控件的使用技巧(三)
- VC2008 Windows Media Player控件的使用技巧
- VC2008 Windows Media Player控件的使用技巧(二)
- VC2008 Windows Media Player控件的使用技巧(三)
- VC2008 Windows Media Player控件的使用技巧(三)
- VC2008 Windows Media Player控件的使用技巧
- VC2008 Windows Media Player控件的使用技巧(三)
- VC2008 Windows Media Player控件的使用技巧(三)
- VC2008 Windows Media Player控件的使用技巧(二)
- VC2008 Windows Media Player控件的使用技巧(二)
- VC2008 Windows Media Player控件的使用技巧
- VC2008 Windows Media Player控件的使用技巧
- VC2008 Windows Media Player控件的使用技巧(二)
- VC2008 Windows Media Player控件的使用技巧(三)
- Visual Studio 2010 使用Windows Media Player控件实现播放音乐视频
- VS 2008 Windows Media Player控件的使用技巧
- VS2008 Windows Media Player控件的使用技巧
- VC2008 Windows Media Player控件的使用技巧(三)
- windows media player控件使用心得