分享
 
 
 

用RealPlayer控件制作的播放器

王朝vc·作者佚名  2006-01-17
窄屏简体版  字體: |||超大  

用RealPlayer控件制作的播放器

作者:浮萍工作室 王哲

下载本文示例源代码

本文介绍如何插入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

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

本程序在调试过程中要多谢杜修杏老师的指点。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有