基于MFC多媒体播放器 下载本文

大连理工大学软件学院本科生课程设计报告

m_play.GetControls().play();qian=false;}

}点击播放时,也开始启动计时器 同理,前进的成员函数 void player::Onqianjing() 后退的成员函数 void player::Onhoutui() 停止得成员函数 void player::Ontingzhi()

停止时,时间进度变为0,同时计数器停止。 暂停的成员函数

void player::Onzanting() { CString strtemp;

GetDlgItemText(ID_zanting,strtemp); if (strtemp.Compare(\暂停\{

m_play.GetControls().pause(); SetDlgItemText(ID_zanting,\继续\ KillTimer(0); }

if (strtemp.Compare(\继续\{m_play.GetControls().play(); SetDlgItemText(ID_zanting,\暂停\SetTimer(0,500,NULL); } }

点击暂停时,显示继续,此时计数器停止。当点击继续时,计数器又开始运行,同时显示出暂停。

定义成员变量int shape=2;默认值为2,表示默认顺序播放。在循环,顺序,随机播放函数中,分别将shape赋值为1,2,3; 创建成员函数

void player::shunxubofang() {

CStdioFile *fsp; if(ntype==3)

–8–

大连理工大学软件学院本科生课程设计报告

{fsp=new CStdioFile(\else if(ntype==1)

{fsp=new CStdioFile(\else if(ntype==4)

{fsp=new CStdioFile(\else if(ntype==5)

{fsp=new CStdioFile(\ else if(ntype==6)

{fsp=new CStdioFile(\ else if(ntype==7)

{fsp=new CStdioFile(\ CString str; if(num1==0) {num1=num2;}

for(int i=0;i<=num1-1;i++) {

fsp->ReadString(str);} playname=str; fsp->Close(); delete fsp;

m_play.SetUrl(playname); num1--; }

此函数用于上一曲的顺序播放。根据媒体类型与播放列表的不同,而选择打开的文件不同。若选择的是第一曲,上一曲为最后一曲。下一曲的顺序播放函数与上面类似,不过若选中为最后一曲时,则下一曲为第一曲。与上面的函数不同在于

if(num1==num2-1) {num1=0;} else

num1++;

for(int i=0;i<=num1;i++) {

fsp->ReadString(str);} playname=str; fsp->Close(); delete fsp;

–9–

大连理工大学软件学院本科生课程设计报告

m_play.SetUrl(playname);

随机播放为在0到总地址数之间随机生成一个数,然后播放次数字所对应的音视屏。与上面的函数不同在于 srand(time(0));

int temp=rand()%num2; 上一曲的函数

oid player::Onxiayiqu() {

// TODO: Add your control notification handler code here] if(shape==1)

{ m_play.SetUrl(playname);} else if(shape==2) {

shunxubofang(); }

else if(shape==3) { suijibofang();} SetTimer(0,500,NULL); }

根据shape的不同,所选择的函数也就不同。

在下一曲的函数中,与上面不同的是,当shape为2时,所调用的函数为shunxubofang2(); 构建成员函数

void player::nowvolume() {

UpdateData(true);

m_volume.Format(\ UpdateData(false);

}使声音滑块所对应的数字呈现在静态文本框中。同时在OnInitDialog()中加入 m_silder.SetRange(0,100); m_silder.SetPos(50); nowvolume();

定义滑块的长度为100,刚开始时是50。 音减的函数中void player::Onyinjiang()

–10–

大连理工大学软件学院本科生课程设计报告

{

// TODO: Add your control notification handler code here long volume=m_play.GetSettings().GetVolume()-10; m_play.GetSettings().SetVolume(volume); m_silder.SetPos(volume); nowvolume();

}每次点击-,就将声音减10。音加只要将减10改为加10即可。同时在音加函数 中加入SetDlgItemText(IDC_jingyin,\静音\当处于静音时,点击+,可将“有声”改为“静音”。

同时为音量滑块建立类向导,添加如下函数

void player::OnReleasedcaptureSlider1(NMHDR* pNMHDR, LRESULT* pResult) {

// TODO: Add your control notification handler code here m_play.GetSettings().SetVolume(m_silder.GetPos()); nowvolume(); *pResult = 0; }

使其能够拖动滑块来改变音量大小。 双击静音后,添加函数

void player::Onjingyin() {

// TODO: Add your control notification handler code here CString strtemp;

GetDlgItemText(IDC_jingyin,strtemp); if (strtemp.Compare(\静音\{

m_play.GetSettings().SetVolume(0); m_silder.SetPos(0);

SetDlgItemText(IDC_jingyin,\有声\ }

if (strtemp.Compare(\有声\{

m_play.GetSettings().SetVolume(30); m_silder.SetPos(50);

SetDlgItemText(IDC_jingyin,\静音\

–11–