操作系统:Windows 7
软件环境:Visual C++ 2008 SP1
本次目的:在VC2008下Windows Media Player控件的用法之进阶篇
在对话框头文件中,添加播放器的一些头文件和声明对象。
- //
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()事件。具体代码如下:
- //
TestDlg.cpp : 实现文件 - BOOL
CTestDlg::OnInitDialog() - {
-
//·········省略 -
m_control=static_cast(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(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; | 是否全屏显示 |
| wmp.controls //播放器基本控制 |
controls.play; | 播放 |
controls.pause; | 暂停 |
controls.stop; | 停止 |
controls.currentPosition:double; | 当前进度 |
controls.currentPositionString:string; | 当前进度,字符串格式。如“00:23” |
controls.fastForward; | 快进 |
controls.fastReverse; | 快退 |
controls.next; | 下一曲 |
controls.previous; | 上一曲 |
| wmp.settings //播放器基本设置 |
settings.volume:integer; | 音量,0-100 |
settings.autoStart:Boolean; | 是否自动播放 |
settings.mute:Boolean; | 是否静音 |
settings.playCount:integer; | 播放次数 |
| 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") |
| wmp.currentPlaylist //当前播放列表属性 |
currentPlaylist.count:integer; | 当前播放列表所包含媒体数 |
currentPlaylist.Item[integer]; | 获取或设置指定项目媒体信息,其子属性同wmp.currentMedia |
表格转载自:http://blog.youkuaiyun.com/jomakzhao/archive/2007/05/11/1604076.aspx