Media Player控件使用
来源:互联网 发布:柯受良心事谁人知视频 编辑:程序博客网 时间:2024/06/05 10:25
1 新建Dialog应用程序
2 1)在Dialog上右击, 选择"Insert ActiveX Control"
2)选择"Windows Media Player", ID为"IDC_OCX1"
3 1)在ClassWizard中为"IDC_OCX1"添加变量"m_player"
2)Category:Control Variabletype:CWMPPlayer4
添加需要的".h文件",及控制代码
#include "wmpplayer4.h"
#include "wmpcontrols.h"
#include "wmpsettings.h"
//wmpplayer4.h
m_wmp.openPlayer("F:\\a.avi"); //去等外部播放器并播放的电影或音乐.但不能对其进行下面的控制.不建议.
m_player.SetUrl("F:\\a.avi"); //设置要播的电影或者音乐
//wmpcontrols.h
m_player.GetControls().play(); //开始播放
m_player.GetControls().pause(); //暂停播放
m_player.GetControls().pause(); //停止
funSetPosition(int posPerCent) //设置播放进度条, 60% posPerCent=60
{
if ( posPerCent >= 0 && posPerCent <= 100)
{
double percent = m_player.GetCurrentMedia().GetDuration() * (posPerCent/100);
m_player.GetControls().SetCurrentPosition(percent);
return 0;
}
else
return 1;
}
//wmpsettings.h
funVolumeADD(int step) //音量增加
{
long cur_vol = m_player.GetSettings().GetVolume();
if (cur_vol < 100 - step)
m_player.GetSettings().SetVolume( cur_vol + step);
else
m_player.GetSettings().SetVolume( 100);
return 0;
}
funVolumeSUB(int step) //音量减少
{
long cur_vol = m_player.GetSettings().GetVolume();
if (cur_vol > step)
m_player.GetSettings().SetVolume( cur_vol - step);
else
m_player.GetSettings().SetVolume( 0);
return 0;
}
int CVideoFrame::funMute() //静音
{
if (m_player.GetSettings().GetMute())
m_player.GetSettings().SetMute(FALSE);
else
m_player.GetSettings().SetMute(TRUE);
return 0;
}
例如: 需要播放时全屏,并且双击退出全屏并暂停节目.
1 ClassWizard->Message Maps
Object IDs:"IDC_OCX1" add Messages:"PlayStateChange"
生成函数"OnPlayStateChangeOcx1(long NewState)"
Object IDs:"IDC_OCX1" add Messages:"DoubleClick"
生成函数"OnDoubleClickOcx1(short nButton, short nShiftState, long fX, long fY)"
//播放时全屏
void OnPlayStateChangeOcx1(long NewState)
{
switch(NewState)
{
case 1: //stopped
break;
case 2: //Paused;
break;
case 3: //playing
m_player.SetFullScreen(TRUE);
break;
default:;
}
}
//双击退出全屏 && 暂停
void OnDoubleClickOcx1(short nButton, short nShiftState, long fX, long fY)
{
m_player.SetFullScreen(FALSE);
m_player.GetControls().pause();
}
//******************************************************************************************************************************************//
HCURSOR CMy17_Dlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CMy17_Dlg::Onadd() //添加文件
{
char szFileFilter[]= "所有文件(*.*)|*.*|" //可选择所有格式的媒体文件
"avi FILE(*.avi)|*.avi|" "mp3 FILE(*.mp3)|*.mp3|"
"mpeg FILE(*.mpeg)|*.mpeg|" "mpga FILE(*.mpga)|*.mpga|"
"wave FILE(*.wav)|*.wav|" "movie FILE(*.mov)|*.mov|"
"mid FILE(*.mid;*.rmi)|*.mid;*.rmi|" "wma FILE(*.wma)|*.wma|"
"media FILE(*.asf)|*.asf|";
CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY|OFN_NOCHANGEDIR|OFN_ALLOWMULTISELECT,szFileFilter);
POSITION pos=dlg.GetStartPosition();
if(dlg.DoModal()==IDOK) //消息响应
{
while(pos!=NULL)
{
m_pathname=dlg.GetNextPathName(pos);
m_list.AddString(m_pathname);
} //将选中的文件加入到播放列表中
}
}
void CMy17_Dlg::Onplay() //播放媒体文件
{
CString str;
if(m_list.GetCount()<=0)
MessageBox("请先打开最少一个媒体文件!","Warning",MB_OK);
else
{
if(m_list.GetCurSel()<0)
{
m_list.SetCurSel(0);
}
}
int index=m_list.GetCurSel();
m_list.GetText(index,str);//获取当前选中文件信息
m_player.SetUrl(str);//播放当前选中文件
}
void CMy17_Dlg::Onpause() //暂停/继续
{
/* CString strtemp;
if((m_player.GetPlayState()==2)|| (m_player.GetPlayState()==3))
{
GetDlgItemText(IDC_pause,strtemp);//获取按钮上的字符
if(strtemp.Compare("暂停")==0)//若显示“暂停”,点击暂停,并显示 “继续”
{
m_player.GetControls().pause();
SetDlgItemText(IDC_pause,"继续");
}
if(strtemp.Compare("继续")==0)//实现从暂停点继续播放,并显示 “暂停”
{
m_player.GetControls().play();
SetDlgItemText(IDC_pause,"暂停");
}
}
else;*/
}
void CMy17_Dlg::Onlist()
{
flag=!flag;
if(!flag)
{
SetWindowPos(NULL,0,0,495,555,SWP_NOMOVE);
}
else
{
SetWindowPos(NULL,0,0,700,555,SWP_NOMOVE);
}
}
void CMy17_Dlg::Onaddvol()
{
// TODO: Add your control notification handler code here
//m_player.GetSettings().SetVolume(m_player.GetSettings().GetVolume()+10);
}
void CMy17_Dlg::Ondecvol()
{
// TODO: Add your control notification handler code here
// m_player.GetSettings().SetVolume(m_player.GetSettings().GetVolume()-10);
}
void CMy17_Dlg::Onmute()
{
// TODO: Add your control notification handler code here
/* CString strtemp;
GetDlgItemText(IDC_mute,strtemp);
if(strtemp.Compare("X")==0)//若显示“X”,点击静音,并显示 “Y”
{
m_player.GetSettings().SetVolume(0);
SetDlgItemText(IDC_mute,"Y");
}
if(strtemp.Compare("Y")==0)//同静音,实现设置声音为50
{
m_player.GetSettings().SetVolume(50);
SetDlgItemText(IDC_mute,"X");
} */
}
void CMy17_Dlg::Onupper()
{
// TODO: Add your control notification handler code here
CString str;
int index=m_list.GetCurSel();
if (index==0)index=m_list.GetCount();
m_list.GetText(index-1,str);
m_player.SetUrl(str);
m_list.SetCurSel(index-1);
}
void CMy17_Dlg::Onnext()
{
CString str;
int index=m_list.GetCurSel();
if (index==m_list.GetCount()-1)index=-1;
m_list.GetText(index+1,str);
m_player.SetUrl(str);
m_list.SetCurSel(index+1);
}
void CMy17_Dlg::Onsave()
{
CStdioFile file;
file.Open(".\\list.txt",CFile::modeCreate|CFile::modeReadWrite|CFile::typeText);
for(int i=0;i<m_list.GetCount();i++)
{
CString strtemp;
m_list.GetText(i,strtemp);
strtemp+="\n"; //需要换行
file.WriteString(strtemp);
}
file.Close();
}
void CMy17_Dlg::Onclear()
{
CStdioFile file;
m_list.ResetContent();
file.Open(".\\list.txt",CFile::modeCreate);
}
void CMy17_Dlg::Onfullscreen()
{
// m_player.SetFullScreen(0);
}
- Media Player控件使用
- Media Player控件使用
- 如何使用 windows media player 控件
- Media player控件基本使用步骤
- windows media player控件使用心得
- C# Media Player控件
- C# Media Player控件
- Windows Media Player控件
- Windows Media Player控件的使用和使用心得
- 使用Media Player框架
- VS2003下windows media player 控件的使用问题
- MFC中对Windows Media Player 控件使用个性皮肤
- VS2003下windows media player 控件的使用问题
- VC2008 Windows Media Player控件的使用技巧
- VC2008 Windows Media Player控件的使用技巧(二)
- VC2008 Windows Media Player控件的使用技巧(三)
- 在WinCE中使用Windows Media Player 控件
- VS 2008 Windows Media Player控件的使用技巧
- R语言——生物统计
- onNewIntent调用时机
- JAVA多线程断点续传下载
- 近期知识总结,包括git的使用
- vim中已有tab文件如何置换tab为空格
- Media Player控件使用
- [leetcode] Binary Search Tree Iterator
- 用户类
- MapReduce:详解Shuffle(copy,sort,merge)过程
- android 开发工具
- codevs 1028 花店橱窗布置 最小费用最大流
- 如何在Android Studio应用中导入SlindingMenu类库
- nginx 设置匿名http正向代理
- riot.js学习【八】观察者