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