VC2008 Windows Media Player控件的使用技巧(三)

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

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

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

[cpp]  view plain copy
  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. };  

对窗体添加事件,添加一个OnTimer()事件。对Media Player添加播放改变PlayStateChange()事件。具体代码如下:

[cpp]  view plain copy
  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. }  

效果如下:

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
已标记关键词 清除标记
相关推荐
<p> <strong><span style="font-size:20px;color:#FF0000;">本课程主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者</span></strong> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">1. 包含:<span style="color:#FFFF00;background-color:#FF0000;">项目源码、</span><span style="color:#FFFF00;background-color:#FF0000;">项目文档、数据库脚本、软件工具</span>等所有资料</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">2. 手把手的带你从零开始部署运行本套系统</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">3. 该项目附带的源码资料可作为毕设使用</span></strong></span> </p> <p> <span style="color:#FF0000;"><strong><span style="font-size:18px;">4. 提供技术答疑和远程协助指导</span></strong></span><strong><span style="font-size:18px;"></span></strong> </p> <p> <br /> </p> <p> <span style="font-size:18px;"><strong>项目运行截图:</strong></span> </p> <p> <strong><span style="font-size:18px;">1)系统登陆界面</span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015433522.png" alt="" /><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">2)学生模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241015575966.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">3)教师模块</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016127898.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">4)系统管理员</span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016281177.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><img src="https://img-bss.csdn.net/202002241016369884.png" alt="" /></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p> <p> <strong><span style="font-size:18px;"><strong><span style="font-size:18px;">更多Java毕设项目请关注我的毕设系列课程 <a href="https://edu.csdn.net/lecturer/2104">https://edu.csdn.net/lecturer/2104</a></span></strong></span></strong> </p> <p> <strong><span style="font-size:18px;"><br /> </span></strong> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页