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

0 0
原创粉丝点击