用RealPlayer控件制作的播放器

翻译|其它|编辑:郝浩|2004-12-29 16:17:00.000|阅读 1532 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


程序运行效果截图:



本文介绍如何插入RealPlay控件实现媒体文件的播放,代码运行效果图如左:
下面简要介绍一下具体实现步骤:

一、建立基于对话框的程序

二、在对话框内添加RealPlayer G2 control的ActiveX控件
(工程->添加工程->compontent and controls->registed ActiveX controls )。

三、在对话框内添加源程序内所示的按钮和静态文本 分别用于控制打开播放等控制及显示歌曲信息 其ID号如源程序

四、用MFC映射各按钮消息

void CSunapplerealplayerDlg::OnOpen()

{

char szFileFilter[]=

"RM File(*.rm)|*.rm|"

"Mp3 File(*.mp3)|*.mp3|"

"MPEG File(*.mpeg)|*.mpeg|"

"Media File(*.asf)|*.asf|"

"Video File(*.dat)|*.dat|"

"MPGA File(*.mpga)|*.mpga|"

"Wave File(*.wav)|*.wav|"

"AVI File(*.avi)|*.avi|"

"Movie File(*.mov)|*.mov|"

"Mid File(*.mid;*,rmi)|*.mid;*.rmi|"

"Wma File(*.wma)|*.wma|"

"All File(*.*)|*.*||";



CFileDialog dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter);

if(dlg.DoModal()==IDOK){

CString PathName=dlg.GetPathName();

PathName.MakeUpper();

m_player->SetSource(PathName);

m_player->DoPlay();

SetDlgItemText(IDC_STATIC1,m_player->GetAuthor());

SetDlgItemText(IDC_STATIC2,m_player->GetTitle());

SetDlgItemText(IDC_COPYRIGHT,m_player->GetCopyright());

SetDlgItemText(IDC_SOURCE,m_player->GetSource());

}

}



void CSunapplerealplayerDlg::OnPlay()

{

SetDlgItemText(IDC_STATIC1,m_player->GetAuthor());

SetDlgItemText(IDC_STATIC2,m_player->GetTitle());

SetDlgItemText(IDC_COPYRIGHT,m_player->GetCopyright());

SetDlgItemText(IDC_SOURCE,m_player->GetSource());

m_player->DoPlay();



UpdateData(false);

SetTimer(1,20,NULL);

}



void CSunapplerealplayerDlg::OnTimer(UINT nIDEvent)

{

if(0&&isRepeat)

m_player->DoPlay();

CDialog::OnTimer(nIDEvent);

}



void CSunapplerealplayerDlg::OnClose()

{

///////添加此代码时不要忘了在stdafx.h开头处添加前两行

AnimateWindow(GetSafeHwnd(),1000,AW_HIDE|AW_BLEND);

KillTimer(0);

////////////////////////////////////

//此处采用DestroyWindow关闭窗口

//多谢杜修杏 老师指点

///////////////////////////////////

this->DestroyWindow();



}



void CSunapplerealplayerDlg::OnFullscreen()

{

m_player->DoPause();

m_player->SetFullScreen();

m_player->DoPlay();

}



void CSunapplerealplayerDlg::OnMp3down()

{

ShellExecute(NULL,_T("open"),"http://sunapple.51.net",NULL,NULL,TRUE);



}



void CSunapplerealplayerDlg::OnPause()

{



m_player->DoPause();

}



void CSunapplerealplayerDlg::OnStop()

{

m_player->DoStop();

KillTimer(0);

}



void CSunapplerealplayerDlg::OnRepeat()

{

m_player->SetLoop(true);

if(isRepeat){

isRepeat=FALSE;

SetDlgItemText(IDC_REPEAT,"循环");

}

else

{

isRepeat=TRUE;

SetDlgItemText(IDC_REPEAT,"正常");

}

}





void CSunapplerealplayerDlg::OnLower()

{

// TODO: Add your control notification handler code here

short volume=m_player->GetVolume();

m_player->DoPause();

m_player->SetVolume(volume-100);

m_player->DoPlay();

}



void CSunapplerealplayerDlg::OnUpper()

{

// TODO: Add your control notification handler code here

short volume=m_player->GetVolume();

m_player->DoPause();

m_player->SetVolume(volume+100);

m_player->DoPlay();

}



void CSunapplerealplayerDlg::OnFloat()

{

// TODO: Add your command handler code here

ShellExecute(NULL,_T("open"),"http://sunapple.51.net",NULL,NULL,TRUE);

}



void CSunapplerealplayerDlg::OnPetroleum()

{

// TODO: Add your command handler code here

ShellExecute(NULL,_T("open"),"http://www.hdpu.edu.cn",NULL,NULL,TRUE);

}

五、映射WM_CTLCOLOR消息,用于控制文本显示的颜色

HBRUSH CSunapplerealplayerDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)

{

HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);



if(nCtlColor==CTLCOLOR_STATIC)

if(pWnd.GetDlgCtrlID()==IDC_VOLUME)

{

pDC.SetTextColor(RGB(165,182,222));

pDC.SetBkMode(TRANSPARENT);

return (HBRUSH) m_brush.GetSafeHandle();

}

if(pWnd.GetDlgCtrlID()==IDC_STATIC1||pWnd.GetDlgCtrlID()==IDC_STATIC2

||pWnd.GetDlgCtrlID()==IDC_SOURCE||pWnd.GetDlgCtrlID()==IDC_COPYRIGHT)

{

pDC.SetTextColor(RGB(0,0,255));

pDC.SetBkMode(TRANSPARENT);

return (HBRUSH) m_brush.GetSafeHandle();

}

if(pWnd.GetDlgCtrlID()==IDC_STATIC||pWnd.GetDlgCtrlID()==IDC_INFO)

{

pDC.SetTextColor(RGB(255,0,0));

pDC.SetBkMode(TRANSPARENT);

return (HBRUSH) m_brush.GetSafeHandle();

}

// TODO: Return a different brush if the default is not desired

return hbr;

}

六、在APP类里的initInstance()里添加下面函数改变对话框背景。

SetDialogBkColor(RGB(206,227,99));

七、为了美观我们的外形可引入CButtonXP类,将个按钮类型设置为CButtonXP

好了,应该大功告成了!调试一下吧!


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP