基于.MFC多媒体播放器_第1页
基于.MFC多媒体播放器_第2页
基于.MFC多媒体播放器_第3页
基于.MFC多媒体播放器_第4页
基于.MFC多媒体播放器_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

...wd......wd......wd...《C/C++课程设计》工程报告目录1工程简介11.1工程名称11.2功能概述11.3开发人员及职责........................................................................................................12需求分析...............................................................................................................................12.1功能需求....................................................................................................................12.2性能需求....................................................................................................................23系统设计...............................................................................................................................33.1代码设计....................................................................................................................33.2流程图......................................................................................................................134系统实现及测试.................................................................................................................175工程总结.............................................................................................................................205.1总体总结..................................................................................................................205.2个人总结..................................................................................................................211工程简介1.1工程名称 多媒体播放器1.2功能概述此款媒体播放器工程具有以下功能:〔1〕本地设定目录中包含音频文件的浏览和播放〔支持mp3格式〕。〔2〕本地设定目录中包含图片文件的浏览〔支持bmp格式〕。〔3〕本地设定目录中包含视频文件的浏览和播放(支持mp4格式)。〔4〕最近播放列表功能,保存最近播放的10个文件,保存最近追加的10个文件。视频,音频,图片是分开的,都有最近播放列表和最近追加列表。1.3开发人员及职责负责视频模块,以及最后的模块整合,报告的编写负责音频模块,报告的编写负责图片模块,报告的编写2需求分析2.1.功能需求本设计将要实现的是一个单机多媒体播放器,可以对音频、视频、图片进展查看。从其目标功能及特点分析,将本软件功能划分如下:视频播放器:可以翻开MP4格式的视频文件。在本地文件夹中将MP4格式的视频文件添加至播放列表,点击播放,或双击列表里的所选工程,就可跳转至视频播放窗口。在播放窗口里,查看视频时,有“播放〞,“暂停〞,“停顿〞功能。播放中,还有“前进〞,“后退〞功能,即快进快退功能,以4秒为一个单位,这个单位也可以在代码中进展修改。在观看视频时,还有“上一曲,下一曲〞功能,即查看之前添加在播放列表里的视频项。同时,也可以选择播放模式“循环,顺序,随机〞,该功能也是基于播放列表实现的。在右边功能键里,还有音量调节,静音功能。除此以外 ,还可以进展全屏浏览,按“ESC〞退出全屏。在主页面,还有两个数据框“最近追加工程〞和“最近播放工程〞,可以直观地看到最近播放工程,且可以手动清空所有工程。这两个列表只按照时间,保存最近的工程,且最多保存10个。音频播放器可以翻开MP3格式的音频。在本地文件夹中将MP3格式的视频文件添加至播放列表,点击播放,或双击列表里的所选工程,就可跳转至音频播放窗口。并且,在主窗口,还有两个数据框“最近追加工程〞和“最近播放工程〞,可以直观地看到最近播放工程,且可以手动清空所有工程。这两个列表只按照时间,保存最近的工程,且最多保存10个。〔此处为该多媒体公共窗口,功能一样,下面的图片浏览器也是一样的。〕在播放窗口里,听取音频时,有“播放〞,“暂停〞,“停顿〞功能。同样也会有“前进,后退〞功能,“上一曲,下一曲〞功能,播放模式中的“循环,顺序,随机〞,这些功能与上面所述的视频播放器一样。图片浏览器可以翻开BMP格式的图片。主窗口同视频、音频播放器一样,在此不多赘述。在浏览图片窗口中,会有“上一张,下一张〞功能键,可以在“播放列表,最近播放工程,最近追加工程〞任何一个列表中循环,可以自由选择。当图片浏览到所选列表的最后一张时,会自动循环至列表第一张。〔4〕在主窗口的中,在列表中已添加文件后,有两种方式可以翻开文件。一是选中想要翻开的文件,点击“播放文件〞按钮,二是直接双击列表中的文件,便可进入到相应子窗口进展查看。〔5〕当单独拿出exe文件运行时,会自动在exe所在文件里创立9个文本文档,分别存放三个模块〔视频,音频,图片〕的三个列表〔播放列表,最近播放工程,最近追加工程〕信息。2.2.性能需求〔1〕硬件平台要求由于本软件为单机软件,不需进展大量的数据读写和数据交换,故对系统硬件配置的要求并不高,只要能够平稳运行Windows操作系统的硬件平台,都能够使用本软件。〔2〕软件开发环境1. OS:MicrosoftWindowsXPSP22. Complier:VisualC++6.0,VisualStudio2005TeamSystem或更高版本3. MSDNLibrary3系统设计3.1.代码设计〔1〕音频、视频模块1.创立播放器对话框右击Dialog,点击插入,在弹出的对话框中点击Dialog,再点击新建。双击新建的得对话框的ID,弹出新建的对话框,删除里面所有的控件。右击,建设类向导,此时弹出Addingaclass对话框,点击ok,输入name为player,点击确定后退出。再在对话框中右击,选择插入ActiveX控件,选择WindowsMediaPlayer,之后在对话框中可以看到一个视频控件。右击,选择属性,在控制中将选择模式改为None,在视频控件中也就看不到一开就有的按键了。再次右击视频控件,选择建设类向导。点击MemberVariables,选择视频控件的ID〔默认为ID_OCX1〕,点击AddVariables。此时会弹出一个对话框。点击确定后,弹出ComfirmClass对话框后,点击OK。此时可以看到建设了很多个类。之后为添加成员变量。Name为m_play,Category为Control,VariableType为CWMPPlayer4.点击确定之后可以看到下面的效果。2.控件与函数声明全局变量CStringplayname,用于记录播放地址;intntype用于记录播放的类型;intnum1,num2,num1用于记录播放的地址在播放列表中的位置,num2用于记录播放列表中总的播放地址。构建成员函数voidplayer::Onplay(CStringpname,intn,intm,intt){playname=pname;num1=n;num2=m;ntype=t;}将前台所选择播放的信息通过函数传递给播放器对话框中在对话框中放上以下几个控件。控件ID标题控件ID标题PushButtonID_bofang播放PushButtonID_zanting暂停PushButtonID_tingzhi停顿PushButtonID_qianjing前进PushButtonID_houtui后退PushButtonID_shangyiqu上一曲PushButtonID_xiayiqu下一曲PushButtonID_yinjia+PushButtonID_yinjiang-PushButtonID_jingyin静音PushButtonID_quanping全屏GroupBoxIDC_static播放模式GroupBoxIDC_yinliangkongzhi音量控制RadioButtonIDC_XUNHUAN循环RadioButtonIDC_shunxu顺序RadioButtonIDC_suiji随机TextIDC_static时间进度TextID_timeStaticTextIDC_volumeStatic滑块IDC_SLIDER1控件排列如下并建设如下三个变量添加全局变量inthour,minute,second;右击对话框,建设类向导,在Messages中选择WM_INITDIALOG,点击ADDFunction,再点击EditCode在BOOLplayer::OnInitDialog()函数中写入hour=0; minute=0; second=0; UpdateData(true); m_time.Format("%d:%d:%d",hour,minute,second); UpdateData(false);让时间进度一开场为0;同样的方法添加成员函数voidplayer::OnTimer(UINTnIDEvent)让时间进度能随着播放的音视频的进度而走。添加成员函数voidplayer::OnDestroy(){ KillTimer(0); CDialog::OnDestroy(); //TODO:Addyourmessagehandlercodehere}在退出播放器对话框时,让计数器停顿。添加全局变量BOOLqian=false;假设qian为true时,表示点击了前进或后退,此时点击播放时,继续播放。双击播放,点击确定,添加以下成员函数voidplayer::Onbofang(){ if(!qian) { m_play.SetUrl(playname);KillTimer(0); hour=minute=second=0; UpdateData(true); m_time.Format("%d:%d:%d",hour,minute,second); UpdateData(false);SetTimer(0,500,NULL); } else { m_play.GetControls().play();qian=false;}}点击播放时,也开场启动计时器同理,前进的成员函数voidplayer::Onqianjing()后退的成员函数voidplayer::Onhoutui()停顿得成员函数voidplayer::Ontingzhi()停顿时,时间进度变为0,同时计数器停顿。暂停的成员函数voidplayer::Onzanting(){CStringstrtemp;GetDlgItemText(ID_zanting,strtemp);if(strtemp.Compare("暂停")==0){ m_play.GetControls().pause();SetDlgItemText(ID_zanting,"继续");KillTimer(0);}if(strtemp.Compare("继续")==0){m_play.GetControls().play();SetDlgItemText(ID_zanting,"暂停");SetTimer(0,500,NULL);}}点击暂停时,显示继续,此时计数器停顿。当点击继续时,计数器又开场运行,同时显示出暂停。定义成员变量intshape=2;默认值为2,表示默认顺序播放。在循环,顺序,随机播放函数中,分别将shape赋值为1,2,3;创立成员函数voidplayer::shunxubofang(){CStdioFile*fsp; if(ntype==3){fsp=newCStdioFile(".\\list.txt",CFile::modeRead);}elseif(ntype==1){fsp=newCStdioFile(".\\list1.txt",CFile::modeRead);}elseif(ntype==4){fsp=newCStdioFile(".\\list21.txt",CFile::modeRead);}elseif(ntype==5){fsp=newCStdioFile(".\\list22.txt",CFile::modeRead);}elseif(ntype==6) {fsp=newCStdioFile(".\\list31.txt",CFile::modeRead);}elseif(ntype==7){fsp=newCStdioFile(".\\list32.txt",CFile::modeRead);} CStringstr; if(num1==0) {num1=num2;} for(inti=0;i<=num1-1;i++) { fsp->ReadString(str);} playname=str; fsp->Close(); deletefsp; m_play.SetUrl(playname); num1--;}此函数用于上一曲的顺序播放。根据媒体类型与播放列表的不同,而选择翻开的文件不同。假设选择的是第一曲,上一曲为最后一曲。下一曲的顺序播放函数与上面类似,不过假设选中为最后一曲时,则下一曲为第一曲。与上面的函数不同在于 if(num1==num2-1) {num1=0;} else num1++; for(inti=0;i<=num1;i++) { fsp->ReadString(str);} playname=str; fsp->Close(); deletefsp; m_play.SetUrl(playname);随机播放为在0到总地址数之间随机生成一个数,然后播放次数字所对应的音视屏。与上面的函数不同在于srand(time(0)); inttemp=rand()%num2;上一曲的函数oidplayer::Onxiayiqu(){ //TODO:Addyourcontrolnotificationhandlercodehere]if(shape==1) { m_play.SetUrl(playname);}elseif(shape==2){ shunxubofang();}elseif(shape==3){suijibofang();}SetTimer(0,500,NULL);}根据shape的不同,所选择的函数也就不同。在下一曲的函数中,与上面不同的是,当shape为2时,所调用的函数为shunxubofang2();构建成员函数voidplayer::nowvolume(){UpdateData(true);m_volume.Format("%d",m_silder.GetPos());UpdateData(false);}使声音滑块所对应的数字呈现在静态文本框中。同时在OnInitDialog()中参加 m_silder.SetRange(0,100);m_silder.SetPos(50); nowvolume();定义滑块的长度为100,刚开场时是50。音减的函数中voidplayer::Onyinjiang(){ //TODO:Addyourcontrolnotificationhandlercodehere longvolume=m_play.GetSettings().GetVolume()-10; m_play.GetSettings().SetVolume(volume);m_silder.SetPos(volume);nowvolume();}每次点击-,就将声音减10。音加只要将减10改为加10即可。同时在音加函数中参加SetDlgItemText(IDC_jingyin,"静音");当处于静音时,点击+,可将“有声〞改为“静音〞。同时为音量滑块建设类向导,添加如下函数voidplayer::OnReleasedcaptureSlider1(NMHDR*pNMHDR,LRESULT*pResult){ //TODO:Addyourcontrolnotificationhandlercodeherem_play.GetSettings().SetVolume(m_silder.GetPos()); nowvolume(); *pResult=0;}使其能够拖动滑块来改变音量大小。双击静音后,添加函数voidplayer::Onjingyin(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringstrtemp;GetDlgItemText(IDC_jingyin,strtemp);if(strtemp.Compare("静音")==0){m_play.GetSettings().SetVolume(0);m_silder.SetPos(0);SetDlgItemText(IDC_jingyin,"有声");}if(strtemp.Compare("有声")==0){m_play.GetSettings().SetVolume(30);m_silder.SetPos(50);SetDlgItemText(IDC_jingyin,"静音");}nowvolume();}当点击静音时,声音变为0,此时文字变为“有声〞,当点击“有声〞时,声音变为50,此时文字为“静音〞。添加全局变量boolquan=false;当其为true时,为全屏显示,默认为false。双击全屏,添加成员函数voidplayer::Onquanping(){ m_play.SetFullScreen(TRUE); quan=true;}此时全屏显示,quan值为true;右击视频控件,建设类向导,Messages中选择DoubleClick,编辑函数,写入 if(!quan) { m_play.SetFullScreen(TRUE); quan=true; }else { m_play.SetFullScreen(FALSE); quan=false;}}根据quan的值,双击之后,来决定是全屏还是退出全屏。图片模块新建对话框,建发与视频播放器的一样。在对话框中引入三个控件,一个图像的,ID设为ID_showing,,类型为位图,在样式中选择凹陷,图像居中,真实图像大小。两个Button,一个为上一张,一个为下一张。建设类向导,方法与播放器一样,类名为photo.构建函数voidphoto::getname(CStringpn,intnum1,intnum2,intnt){m_path=pn;now=num1;sum=num2;type=nt;}将前台数据传给后台全局变量m_path为播放地址,now为播放地址序列,sum为总播放数量,type为播放列表的类型。创立函数voidphoto::showpic(){hwnd=GetDlgItem(IDC_showing);hDesDC=hwnd->GetDC()->m_hDC;hSrcDC=CreateCompatibleDC(hDesDC);hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),m_path,IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);GetObject(hBitmap,sizeof(BITMAP),&bm);SelectObject(hSrcDC,hBitmap);hwnd->GetClientRect(&rect);::SetStretchBltMode(hDesDC,COLORONCOLOR);::StretchBlt(hDesDC,rect.left,rect.top,rect.right,rect.bottom,hSrcDC,0,0,bm.bmWidth,bm.bmHeight,+SRCCOPY);UpdateData(false);}此函数为将图像在图像控件中显示。接下来进展在OnPaint()函数中画图。由于此类中没有该函数,可通过建设类向导〔3〕主窗口模块翻开VC6++,新建工程。选择MFCAppWizard(exe),在工程名字中填入media1,如以下列图点击确定。选择创立类型为根本对话框。一直点击确定。最后翻开对话框,删除里面所有的控件。右击media1resources,点击插入,选择新建Meun,翻开Meun菜单,新建三个主菜单:应用程序,媒体类型,目录设定。建设次菜单如以下列图所示主菜单次菜单ID次菜单标明应用程序ID_tuichu退出媒体类型ID_yinyue音乐媒体类型ID_tupian图片媒体类型ID_shipin视频目录设定ID_mulu设定监视目录在media1Dlg.cpp中头文件下参加CMenum_Menu;并在BOOLCMedia1Dlg::OnInitDialog()函数中参加m_Menu.LoadMenu(IDR_MENU1);SetMenu(&m_Menu);这样就可以菜单嵌入该对话框中。建设全局函数inttype=1,默认值为1。翻开新建的菜单,右击应用程序下的退出,建设类向导,在Messages中选择COMMAND,再点击AddFunction。再点击EditCode,翻开函数Ontuichu(),里面写入CDialog::OnCancel();运行程序后,点击推出时,可退出次对话框。同样的方法为音乐,图片和视频建设类向导,翻开函数,分别将type复制为1,2,3;为了选中不同类型后,能够在选项前面打勾。则需要建设类向导,选择UPDATA_COMMAND_UI点击确定之后,在音乐函数中写入 pCmdUI->SetCheck(type==1||type==4||type==5);,当type为1或4或5时音乐前面打勾.同理图片所对应的type为2或8或9,视频的type为3或6或7.担当运行时,还不能出现上述现象。因为此函数是菜单所有的,根本对话框中不包含函数,这是就需要借助菜单中的函数。在Cmedia1aDlg类中声明成员函数OnInitMenuPopup(CMenu*pPopupMenu,UINTnIndex,BOOLbSysMenu),接着直接将函数copy给此类中。将函数参加后,运行后,点击不同类型的媒体后,会看到前面打勾。在对话框的函数中建设全局变量boolmulu=true;默认值为true,表示显示播放列表。接下来在设定监视目录中,与前面同样的方法,建设类向导,选择两个函数,此函数与音乐的函数一样,如下voidCMedia1Dlg::Onmulu(){ if(mulu) { m_list.ShowWindow(SW_HIDE); mulu=false; } else { m_list.ShowWindow(SW_SHOW); mulu=true;}}voidCMedia1Dlg::OnUpdatemulu(CCmdUI*pCmdUI){ //TODO:AddyourcommandupdateUIhandlercodehere pCmdUI->SetCheck(mulu);}默认时,此菜单前面打勾,播放列表显示。当打击后,true为false,前面不打勾,播放列表不显示。再次点击时,mulu有变为true.〔m_list为播放列表的变量,之后会声明〕。菜单建好后,接下来就时对话框的界面了。在主菜单中选入三个Button4,Button5,Button6,,ID分别要与菜单中音乐,图片,视频的ID要一样。为了点击时与点击所对应的菜单一样。并将这三个Button属性中的样式中点击所有者绘图。在右边的资源框中右击Bitmap,在此文件夹中插入三张图片,图片的格式必须为bmp,接下来就是将图片嵌入这三个button中。对话框的函数中头文件下声明三个CBitmapButton变量,为m_btnX1,m_btnX2,m_btnX3;在BOOLCMedia1Dlg::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的大小与图片的大小想适应。运行后,结果如图。在对画框中引入四个组合框,标题分别为播放列表,最进播放列表,最近追加工程,最近播放工程。分别在播放列表,最近追加工程,最近播放工程中参加一个列表框。排列如以下列图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)这是由于水平滑条不灵敏,以此当运行时可以看到水平滑条。垂直滑条得数量到达列表的容量时可以看到。构架成员函数voidCMedia1Dlg::dakaiwenjian()此函数是为了将九个文件中的数据根据媒体类型的不同,读入所对应的列表框中。如果这九个文件不存在,则自动创立。文件与所对应的列表如以下列图文件列表文件列表lixt.txt视频播放列表List22.txt最近播放音频Lixt31.txt最近添加视频List41.txt图片播放列表Lixt32.txt最近播放视频List42.txt最近添加图片List1.txt音频播放列表List43.txt最近播放图片List21.txt最近添加音频在CMedia1Dlg::OnInitDialog()函数中调用此函数,当开场运行此函数时,开场读取文件,默认是音频。在对话框中双击Button4,翻开函数,写入m_list.ResetContent();m_zuijia.ResetContent();m_zuibo.ResetContent(); dakaiwenjian();首先是去除三个列表框中的内容,然后又翻开文件,从新读取新的内容。Button5与Button6与之一样。接下来开场为三个列表添加内容了。添加一个Button,名字为添加文件。双击,翻开函数, if(type==3||type==6||type==7){charszFileFilter[]= "MedalFile(*.avi,*.wmv,*.asf)|*.avi;*.wmv;*.asf|""RMVBFile(*.rmvb)|*.rmvb|""MP4File(*.mp4)|*.mp4|""MkvFile(*.mkv)|*.mkv|""AllFile(*.*)|*.*||"; CFileDialogdlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_NOCHANGEDIR|OFN_ALLOWMULTISELECT,szFileFilter); POSITIONpos=dlg.GetStartPosition();if(dlg.DoModal()==IDOK){while(pos!=NULL) {m_pathname=dlg.GetNextPathName(pos); for(inti=0;i<m_list.GetCount();i++) { CStringstrtemp;m_list.GetText(i,strtemp); if(m_pathname==strtemp) {MessageBox("该文件已存在"); break;} }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代表图片。函数的随后还要调用保存函数。视频的保存函数为elseif(type==3||type==6||type==7) {ofstreamfile,file1;file.open(".\\list.txt");file1.open(".\\list31.txt");for(inti=0;i<m_list.GetCount();i++){ CStringstrtemp;m_list.GetText(i,strtemp); strtemp+="\n"; file<<strtemp;}for(i=0;i<m_zuijia.GetCount();i++){ CStringstrtemp;m_zuijia.GetText(i,strtemp); strtemp+="\n"; file1<<strtemp;}file1.close();file.close(); }用此文件函数,还需要添加头文件#include“fstream.h〞.音乐与图片与之一样,只是所保存的文件不同。接下来是保存最近播列表。创立成员函数voidCMedia1Dlg::zuibobaocun(){ofstreamfile2;if(type==1||type==4||type==5){file2.open(".\\list22.txt");}elseif(type==3||type==6||type==7){file2.open(".\\list32.txt");}elseif(type==2||type==8||type==9){file2.open(".\\list43.txt");}for(inti=0;i<m_zuibo.GetCount();i++){ CStringstrtemp;m_zuibo.GetText(i,strtemp); strtemp+="\n"; file2<<strtemp;}根据媒体类型不同,保存在三个不同的文件中。创立最近播放函数voidCMedia1Dlg::tianjia(){CStringstr;for(inti=0;i<m_zuibo.GetCount();i++){ m_zuibo.GetText(i,str); if(str==m_pathname) break;}if(i==m_zuibo.GetCount()){if(m_zuibo.GetCount()==10) {m_zuibo.DeleteString(0);} m_zuibo.AddString(m_pathname); zuibobaocun();}其效果与其他两个列表保存函数一样。从新引入四个按键,分别为删除文件,清空最近播放列表,清空最近添加工程,和播放文件。双击清空最近是,添加函数 m_zuibo.ResetContent(); zuibobaocun();清空最近播放列表。清空最近添加工程与之相似。删除文件按钮是删除播放列表中的所选择的文件。函数为m_list.DeleteString(m_list.GetCurSel());Onbaocunwenjian();最后就是播放了。播放分单击和双击。拿播放列表来说,先双击播放列表,创立函数voidCMedia1Dlg::OnSelchangeList2(){ //TODO:Addyourcontrolnotificationhandlercodehere select=true; CStringstr;num=m_list.GetCurSel(); m_list.GetText(num,str); m_pathname=str; count=m_list.GetCount();} select为全局变量,其为true时,表示以选中工程。Num表示所选中的地址的所对应的数字,count为总地址数。所中之后再点击播放文件按钮,其函数为voidCMedia1Dlg::Onbofang(){ //TODO:Addyourcontrolnotificationhandlercodehere if(select) { if(type!=2&&type!=8&&type!=9) {tianjia();playerplay;play.Onplay(m_pathname,num,count,type);play.DoModal(); } else { tianjia(); photoph; ph.getname(m_pathname,num,count,type); ph.DoModal();} } else {MessageBox("还没有选择播放文件");}}先调用添加函数,将播放的地址参加最近播放列表中。接下来根据type的不同翻开的对话框不同,通过函数传递播放地址,播放类型,以及当前顺序和总数量。接下来是双击。右击播放列表,建设类想到,点击LBN_DBLCLK,添加函数voidCMedia1Dlg::OnDblclkList2(){ //TODO:Addyourcontrolnotificationhandlercodehere if(type!=2&&type!=8&&type!=9) { CStringstr; num=m_list.GetCurSel(); m_list.GetText(num,str); m_pathname=str;playerplay;play.Onplay(m_pathname,num,m_list.GetCount(),type);tianjia();play.DoModal();} else { CStringstr; num=m_list.GetCurSel(); m_list.GetText(num,str); m_pathname=str;photopp;pp.getname(m_pathname,num,m_list.GetCount(),type);tianjia();pp.DoModal(); }}此函数为以上两个函数的合体。其他两个列表单击双击播放与之相似,只是需要在里面从根据原先的type为复制。Type的是与列表对应的关系如下1音乐播放列表2图片播放列表3视频播放列表4最近添加音乐5最近播放音乐6最近添加视频7最近播放视频8最近添加图片9最近播放图片3.2.流程图图片浏览器图片上一张下一张4系统实现及测试播放器主界面播放音频播放视频图片浏览5工程总结5.1总体总结对于这个多媒体播放器的工程,可以说我们

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论