分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

操作系统:Windows 7
软件环境:Visual C++ 2008 SP1
本次目的:在VC2008下Windows Media Player控件的用法之进阶篇

在上次的编写Media Player播放器后,这次我们来实现对音视频的控制,比如:播放、暂停、停止、快进、音量、进度条等等。首先我们在对话框上放置如下按钮,如图:

在对话框头文件中,添加播放器的一些头文件和声明对象。

[cpp] view plaincopyprint?
  1. // TestDlg.h : 头文件
  2. //
  3. #pragma once
  4. #include "afxwin.h"
  5. #include "CWMPPlayer4.h"     //播放头文件
  6. #include "CWMPControls.h"   //控制头文件
  7. #include "CWMPSettings.h"   //设置头文件
  8. #include "CWMPMedia.h"      //媒体头文件
  9. #include "afxcmn.h"
  10. // CTestDlg 对话框
  11. class CTestDlg : public CDialog
  12. {
  13. // ······在这里省略
  14. public:
  15. CWMPPlayer4 m_Player;    //播放地址关联
  16. CWMPControls m_control;  //控制按钮关联
  17. CWMPSettings m_setting;   //设置按钮关联
  18. CWMPMedia m_media;  //媒体
  19. CProgressCtrl m_progress;  //进度条
  20. };

// 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()事件。具体代码如下:

[cpp] view plaincopyprint?
  1. // TestDlg.cpp : 实现文件
  2. BOOL CTestDlg::OnInitDialog()
  3. {
  4. //·········省略
  5. m_control=static_cast<CWMPControls>(m_Player.get_controls());
  6. m_setting=m_Player.get_settings();
  7. return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
  8. }
  9. void CTestDlg::OnBnClickedButton1()
  10. {
  11. m_control.play();  //播放
  12. }
  13. void CTestDlg::OnBnClickedButton6()
  14. {
  15. CString fileName;
  16. CFileDialog fileDialog( TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("音频、视频文件(*.*)|*.*||"),this);
  17. if (fileDialog.DoModal() == IDOK)
  18. {
  19. fileName=fileDialog.GetPathName();
  20. m_Player.put_URL(fileName);   //打开播放
  21. }
  22. m_media=static_cast<CWMPMedia>(m_Player.newMedia(fileName));
  23. m_progress.SetRange(0,(int)m_media.get_duration());  //媒体总长度
  24. m_progress.SetPos(0);
  25. }
  26. void CTestDlg::OnBnClickedButton2()
  27. {
  28. m_control.pause();  //暂停
  29. }
  30. void CTestDlg::OnBnClickedButton3()
  31. {
  32. m_control.stop();        //停止
  33. }
  34. void CTestDlg::OnBnClickedButton4()
  35. {
  36. m_control.fastForward();   //快进
  37. }
  38. void CTestDlg::OnBnClickedButton5()
  39. {
  40. m_control.fastReverse();   //快退
  41. }
  42. void CTestDlg::OnBnClickedButton7()
  43. {
  44. m_Player.put_fullScreen(1);   //全屏
  45. }
  46. void CTestDlg::OnBnClickedButton8()
  47. {
  48. m_setting.put_volume(m_setting.get_volume()-10);   //音量减少
  49. }
  50. void CTestDlg::OnBnClickedButton9()
  51. {
  52. m_setting.put_volume(m_setting.get_volume()+10);  //音量增加
  53. }
  54. void CTestDlg::PlayStateChangeOcx1(long NewState)
  55. {
  56. if (NewState==3)                //播放状态时, 开启定时器
  57. SetTimer(1,1000,NULL);
  58. else if (NewState==1)             //停止时, 关闭定时器, 进度条回0
  59. {
  60. m_progress.SetPos(0);
  61. KillTimer(1);
  62. }
  63. else
  64. KillTimer(1);
  65. }
  66. void CTestDlg::OnTimer(UINT_PTR nIDEvent)
  67. {
  68. // TODO: 在此添加消息处理程序代码和/或调用默认值
  69. if (nIDEvent != 1)
  70. return;
  71. m_progress.SetPos(m_progress.GetPos()+1);
  72. CDialog::OnTimer(nIDEvent);
  73. }

// 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);}

效果如下:

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

表格转载自:http://blog.csdn.net/jomakzhao/archive/2007/05/11/1604076.aspx

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

VC2008 Windows Media Player控件的使用技巧 三相关推荐

  1. VC2008 Windows Media Player控件的使用技巧

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 操作系统 ...

  2. VC2008 Windows Media Player控件的使用技巧 二

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 操作系统 ...

  3. C# WinForm 添加Windows Media Player 控件调试出现未能加载文件或程序集Interop.WMPLib,该怎么解决...

    C# WinForm 添加Windows Media Player 控件调试出现未能加载文件或程序集Interop.WMPLib 如标题,在窗体中添加Windows Media Player 控件,当 ...

  4. C#中Windows Media Player控件使用实例|方法

    Windows Media Player控件Windows Media Player是一种媒体播放器,可以播放当前最流行的音频.视频文件和大多数混合型的多媒体文件.为了便于程序的开发,Visual S ...

  5. Windows Media Player控件的所有属性和方法

    Windows Media Player控件的所有属性和方法----1 player.GetPlayState() 返回播放器状态(0:停止,1:连接,2:缓冲,3:播放,4:暂停,5:寻找) 网页中 ...

  6. Windows Media Player控件研究

    初级问题: 我的那个定时提醒程序中要用到它,初步使用问题已解决.基本使用步骤如下: 一.往控件箱中添加此控件:wmp.dll 二.往窗体上拖控件 三.wmp.URL=XXXX;wmp.play()即可 ...

  7. 音乐播放器制作一(Windows Media Player控件)

    VS2013 MFC做音乐播放器,需要使用到ActiveX控件(Windows Media Player),可以播放音视频,支持歌单添加,删除,保存操作,支持循环,顺序,随机播放.   话不多说,先来 ...

  8. c#—如何借助windows media player控件编写播放器

    windows media player控件的常用属性和方法 以下 music player 均为windows media player控件的名字. 1.属性  1)musicPlayer.sett ...

  9. 基于.net的C# Windows Media Player控件

    C#Windows Media Player控件 一.往控件箱中添加此控件:wmp.dll 二.往窗体上拖控件(本人添加...有时候你拖拽控件到窗体上时候会弹出错误窗口提示'axHost'注册失败什么 ...

最新文章

  1. UbuntuServer16.04LTS版怎样修改数据源为国内数据源
  2. 软件架构师的工作流程
  3. 联想电脑如何下载matlab,lenovo utility是什么软件?
  4. 一个莫名的人,竞标,教训,韩国女人
  5. 【首次开放】京东商城AI项目实战学习
  6. 一文理解 K8s 容器网络虚拟化
  7. [最新]制作u盘引导安装ubuntu11.04
  8. xpath的一些测试
  9. c++求n的几次方_数理统计|笔记整理(E)——Ch7-C习题课
  10. 4.算法优化 -高性能JavaScript
  11. Axure 9 实战案例,动态面板的应用 3,京东的拖动拼图登录验证
  12. win10、win8/8.1、win7系统激活工具-----也可激活Office各版本
  13. EXCEL VBA编程入门四:录制宏
  14. 社交仅发送图片和视频 -设计测试用例
  15. 表格表头绘制对角线(不固定表格宽高)
  16. Blender3.0一些建模技巧与应用
  17. 从数学上推导伴随矩阵特征值
  18. uhs3内存卡有哪些_什么是UHS超高速SD卡?三代有什么区别
  19. checkedListBox获取选择的值
  20. 百度乐居能否引领房地产市场新风向标?

热门文章

  1. Oracle死锁解决常用方法
  2. maven报错:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:x.x.x:test
  3. 23.网市场云建站系统部署
  4. 【Python】pyinstaller安装失败的解决办法
  5. C#LeetCode刷题之#811-子域名访问计数​​​​​​​(Subdomain Visit Count)
  6. json写入数据库或生成excel
  7. kubernetes_Kubernetes领域的标准安全性。
  8. 蒙特卡洛能解决啥_用蒙特卡洛方法解决“无法解决”的问题
  9. 硅谷历史_使其新颖:硅谷设计的历史
  10. 链栈的入栈和出栈代码_代码简介:全栈开发仍然有效