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

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

默认时,此菜单前面打勾,播放列表显示。当打击后,true为false,前面不打勾,播放列表不显示。再次点击时,mulu有变为true.(m_list为播放列表的变量,之后会声明)。

菜单建好后,接下来就时对话框的界面了。在主菜单中选入三个Button4,Button5,Button6, ,ID分别要与菜单中音乐,图片,视频的ID要一样。

为了点击时与点击所对应的菜单一样。并将这三个Button属性中的样式中点击所有者绘图。

在右边的资源框中右击Bitmap,在此文件夹中插入三张图片,图片的格式必须为bmp,接下来就是将图片嵌入这三个button中。对话框的函数中头文件下声明三个CBitmapButton变量,为 m_btnX1,m_btnX2,m_btnX3;在BOOL CMedia1Dlg::OnInitDialog()函数中写入 m_btnX1.LoadBitmaps(IDB_BITMAP2); m_btnX1.SubclassDlgItem(ID_yinyue,this); m_btnX1.SizeToContent();

m_btnX2.LoadBitmaps(IDB_BITMAP1); m_btnX2.SubclassDlgItem(ID_tupian,this); m_btnX2.SizeToContent();

m_btnX3.LoadBitmaps(IDB_BITMAP3); m_btnX3.SubclassDlgItem(ID_shipin,this); m_btnX3.SizeToContent();

每一个CBitmapButton变量与button所对应起来。SizeToContent();是为了将Button的大小与图片的大小想适应。运行后,结果如图。

–16–

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

在对画框中引入四个组合框,标题分别为播放列表,最进播放列表,最近追加项目,最近播放项目。分别在播放列表,最近追加项目,最近播放项目中加入一个列表框。排列

如下图

ID从左往右依次为ID_list2,ID_bofang,ID_zuijia,并在属性中选择水平滚动及垂直滚动。右击ID_list2,点击建议类向导,选择添加成员变量,类型为CListBox,名字为m_list。同理,也为其他两个列表框建立两个成员变量,依次为m_zuibo,m_zuija,类型相同。接下来在CMedia1Dlg::OnInitDialog()函数中写入

m_list.SetHorizontalExtent(1000); m_zuijia.SetHorizontalExtent(1000); m_zuibo.SetHorizontalExtent(1000)

这是由于水平滑条不灵敏,以此当运行时可以看到水平滑条。垂直滑条得数量到达列表的容量时可以看到。构架成员函数 void CMedia1Dlg::dakaiwenjian()

此函数是为了将九个文件中的数据根据媒体类型的不同,读入所对应的列表框中。 如果这九个文件不存在,则自动创建。文件与所对应的列表如图所示 文件 lixt.txt Lixt31.txt Lixt32.txt List1.txt List21.txt 列表 视频播放列表 最近添加视频 最近播放视频 音频播放列表 最近添加音频 文件 List22.txt List41.txt List42.txt List43.txt 列表 最近播放音频 图片播放列表 最近添加图片 最近播放图片 –17–

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

在CMedia1Dlg::OnInitDialog()函数中调用此函数,当开始运行此函数时,开始读取文件,默认是音频。在对话框中双击Button4,打开函数,写入 m_list.ResetContent(); m_zuijia.ResetContent(); m_zuibo.ResetContent(); dakaiwenjian();

首先是清除三个列表框中的内容,然后又打开文件,从新读取新的内容。Button5与Button6与之相同。

接下来开始为三个列表添加内容了。添加一个Button,名字为添加文件。双击,打开函数,

if(type==3||type==6||type==7){ char szFileFilter[]=

\ \ \ \ \ 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); for(int i=0;i

CString strtemp;

m_list.GetText(i,strtemp); if(m_pathname==strtemp)

{ MessageBox(\该文件已存在\ break;} }

–18–

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

if(m_zuijia.GetCount()==10) {

m_zuijia.DeleteString(0);} if(i==m_list.GetCount()) {

m_list.AddString(m_pathname);

m_zuijia.AddString(m_pathname); } } } }

此函数是打开视频文件,并将其加入播放列表中,同时还有一个判断是否已存在的if语句,若存在,则不添加。添加的地址也会导入最近添加的项目中,若超过十个,则将第一个删掉。列表框中的排列为时间先后顺序。3,6,7代表视频文件,只是所对应的列表不同。音频与图片与之类似,1,4,5代表音频,2,8,9代表图片。函数的随后还要调用保存函数。视频的保存函数为else if(type==3||type==6||type==7) {

ofstream file,file1; file.open(\ file1.open(\

for(int i=0;i

CString strtemp;

m_list.GetText(i,strtemp); strtemp+=\ file<

for( i=0;i

CString strtemp;

m_zuijia.GetText(i,strtemp); strtemp+=\ file1<

file1.close(); file.close();

–19–