摘要:本文主要向大家介绍了VC编程之VC2008 Windows Media Player控件的使用技巧,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
本文主要向大家介绍了VC编程之VC2008 Windows Media Player控件的使用技巧,通过具体的内容向大家展示,希望对大家学习VC编程有所帮助。
操作系统: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. }
效果如下:
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言VC/MFC频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号