收藏 分销(赏)

基于MFC多媒体播放器.doc

上传人:w****g 文档编号:3993236 上传时间:2024-07-24 格式:DOC 页数:25 大小:91.54KB 下载积分:10 金币
下载 相关 举报
基于MFC多媒体播放器.doc_第1页
第1页 / 共25页
基于MFC多媒体播放器.doc_第2页
第2页 / 共25页


点击查看更多>>
资源描述
大连理工大学软件学院本科生课程设计报告 《C/C++课程设计》项目报告 目 录 1 项目简介1 1。1项目名称1 1.2功能概述1 1。3 开发人员及职责。。。。.。。。。.。.。。。。.。。.。。。.....。。。。.。..。.。.。。..。...。..。..。。。。.。.。。.。。。。..。.。。。。。。..。。。。.。。。。。。..。。。。.。。...。1 2 需求分析。。。。..。。。。...。。.。。。。。..。。。.。.。。..。.。。。。。.。。..。.。。.。..。...。。...。..。.。。。.。。.。.。..。。。...。。。.。.。。。。。。。。.。。。。。。。.。。。..。.。。.。...。。。。。1 2。1 功能需求..。。。。。。.。。.。。.。..。。。。。。。。。。。。。.。....。。.。。。.。..。.。。.。。。。。。。。。。。.。...。。。。。.。..。...。.。。。..。。.。。。。。。.。..。...。.。...。。。。.1 2。2 性能需求。..。..。。。..。。。.。..。。。.。..。..。.。。。。.。。。。。....。。。.。。。。..。。..。。。.。.。.。。.。.....。.。.。.。。。。。。。.。。.。.。。.。。。。.。..。。。。。。.。。.。2 3 系统设计。。。。.。..。。.。。。。..。。.。。。.。。.。。。。。。。。.....。..。。。.。。。..。。。.。。..。。。.。。.。。。.。....。。..。。。。。。。。。。。。。。..。。。。。。。。。。。。。。。。.。。。。。....。。。..3 3.1 代码设计。。。。.。.....。..。。....。.。。.。。...。。..。。。。。..。....。。。。.。.。。。.。。。。。..。。.。。.。.。。...。。。..。。.。。。。。..。。。。。。。。...。。。。。。。...。。。3 3。2 流程图。。。。.。。。。。.。。..。。..。。。。。。。。.。....。。。。。。。..。..。。。.。。。。。。。。.。。..。.。.。。。。..。。。。。。。。。.。。。。.。。。...。。。。。..。.。。。。。。.。。。。。.。..13 4 系统实现及测试..。.。。。。。。。。..。..。.。。.。。..。.。。....。。..。..。.。.。。.。。.。.。.。。..。。。..。。。..。.。。。。。.。。。..。。。.。..。。。。。。..。。。.。。.。。.。。。..。17 5 项目总结..。.。。...。。.。.。。。。.。。。.。.。。。。。。。。。。。。。.。。..。。。。。.。.。。。。。.。..。。。..。。。.。。。。。..。.。。。。.。。。...。.。。.....。.。......。。。.。。。.。....。..。.20 5。1 总体总结.。。。。.。.。。。。..。..。。。..。。.。.。.。。..。。。。..。..。.。.。。。.。。。。。。......。.。。..。。。....。。。。.......。。。。。。...。。。。。。.。。。....。。.。.20 5。2 个人总结..。。。.。。.。.。。。.。..。。。。。.。。。。。..。。.。.。.....。.。.。.。。。。。。.。.。。。.。...。.。。。。.。。..。。。。。.。。。.。...。。。.。。.。。.。.。。。.。。。..。。。21 大连理工大学软件学院本科生课程设计报告 1 项目简介 1.1 项目名称 多媒体播放器 1.2 功能概述 此款媒体播放器项目具有以下功能: (1)本地设定目录中包含音频文件的浏览和播放(支持mp3格式)。 (2)本地设定目录中包含图片文件的浏览(支持bmp格式)。 (3)本地设定目录中包含视频文件的浏览和播放(支持mp4格式)。 (4)最近播放列表功能,保存最近播放的10个文件,保存最近追加的10个文件。视频,音频,图片是分开的,都有最近播放列表和最近追加列表。 1。3 开发人员及职责 负责视频模块,以及最后的模块整合,报告的编写 负责音频模块,报告的编写 负责图片模块,报告的编写 2 需求分析 2。1。 功能需求 本设计将要实现的是一个单机多媒体播放器,可以对音频、视频、图片进行查看。从其目标功能及特点分析,将本软件功能划分如下: (1) 视频播放器: 可以打开MP4格式的视频文件。 在本地文件夹中将MP4格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至视频播放窗口。 在播放窗口里,查看视频时,有“播放”,“暂停”,“停止”功能。 播放中,还有“前进”,“后退”功能,即快进快退功能,以4秒为一个单位,这个单位也可以在代码中进行修改。 在观看视频时,还有“上一曲,下一曲”功能,即查看之前添加在播放列表里的视频项。同时,也可以选择播放模式“循环,顺序,随机",该功能也是基于播放列表实现的. 在右边功能键里,还有音量调节,静音功能.除此以外 ,还可以进行全屏浏览,按“ESC"退出全屏. 在主页面,还有两个数据框“最近追加项目”和“最近播放项目”,可以直观地看到最近播放项目,且可以手动清空所有项目。这两个列表只按照时间,保存最近的项目,且最多保存10个. (2) 音频播放器 可以打开MP3格式的音频。 在本地文件夹中将MP3格式的视频文件添加至播放列表,点击播放,或双击列表里的所选项目,就可跳转至音频播放窗口。并且,在主窗口,还有两个数据框“最近追加项目”和“最近播放项目”,可以直观地看到最近播放项目,且可以手动清空所有项目。这两个列表只按照时间,保存最近的项目,且最多保存10个。 (此处为该多媒体公共窗口,功能相同,下面的图片浏览器也是一样的.) 在播放窗口里,听取音频时,有“播放”,“暂停”,“停止”功能。 同样也会有“前进,后退"功能,“上一曲,下一曲"功能,播放模式中的“循环,顺序,随机",这些功能与上面所述的视频播放器相同。 (3) 图片浏览器 可以打开BMP格式的图片。 主窗口同视频、音频播放器一样,在此不多赘述. 在浏览图片窗口中,会有“上一张,下一张”功能键,可以在“播放列表,最近播放项目,最近追加项目”任何一个列表中循环,可以自由选择。当图片浏览到所选列表的最后一张时,会自动循环至列表第一张. (4)在主窗口的中,在列表中已添加文件后,有两种方式可以打开文件.一是选中想要打开的文件,点击“播放文件”按钮,二是直接双击列表中的文件,便可进入到相应子窗口进行查看. (5)当单独拿出exe文件运行时,会自动在exe所在文件里创建9个文本文档,分别存放三个模块(视频,音频,图片)的三个列表(播放列表,最近播放项目,最近追加项目)信息。 2。2. 性能需求 (1)硬件平台要求 由于本软件为单机软件,不需进行大量的数据读写和数据交换,故对系统硬件配置的要求并不高,只要能够平稳运行Windows操作系统的硬件平台,都能够使用本软件. (2)软件开发环境 1。 OS:Microsoft Windows XP SP2 2。 Complier:Visual C++ 6.0 , Visual Studio 2005 Team System或更高版本 3。 MSDN Library 3 系统设计 3.1。代码设计 (1)音频、视频模块 1。创建播放器对话框 右击Dialog,点击插入,在弹出的对话框中点击Dialog,再点击新建。 双击新建的得对话框的ID,弹出新建的对话框,删除里面所有的控件。 右击,建立类向导,此时弹出Adding a class对话框,点击ok,输入name为player, 点击确定后退出。 再在对话框中右击,选择插入ActiveX控件,选择Windows Media Player,之后在对话框中可以看到一个视频控件。右击,选择属性,在控制中将选择模式改为None,在视频控件中也就看不到一开就有的按键了。再次右击视频控件,选择建立类向导。点击Member Variables,选择视频控件的ID(默认为ID_OCX1), 点击Add Variables。此时会弹出一个对话框。 点击确定后,弹出Comfirm Class对话框后,点击OK.此时可以看到建立了很多个类。之后为添加成员变量。Name为m_play ,Category为Control,Variable Type为CWMPPlayer4.点击确定之后可以看到下面的效果. 2。控件与函数 声明全局变量CString playname,用于记录播放地址;int ntype用于记录播放的类型;int num1,num2,num1用于记录播放的地址在播放列表中的位置,num2用于记录播放列表中总的播放地址。构建成员函数void player::Onplay(CString pname,int n,int m,int t) {playname=pname; num1=n;num2=m;ntype=t;} 将前台所选择播放的信息通过函数传递给播放器对话框中 在对话框中放上以下几个控件。 控件 ID 标题 控件 ID 标题 Push Button ID_bofang 播放 Push Button ID_zanting 暂停 Push Button ID_tingzhi 停止 Push Button ID_qianjing 前进 Push Button ID_houtui 后退 Push Button ID_shangyiqu 上一曲 Push Button ID_xiayiqu 下一曲 Push Button ID_yinjia + Push Button ID_yinjiang - Push Button ID_jingyin 静音 Push Button ID_quanping 全屏 Group Box IDC_static 播放模式 Group Box IDC_yinliangkongzhi 音量控制 Radio Button IDC_XUNHUAN 循环 Radio Button IDC_shunxu 顺序 Radio Button IDC_suiji 随机 Text IDC_static 时间进度 Text ID_time Static Text IDC_volume Static 滑块 IDC_SLIDER1 控件排列如下 并建立如下三个变量 添加全局变量int hour, minute, second; 右击对话框,建立类向导,在Messages中选择WM_INITDIALOG,点击ADD Function,再点击Edit Code在BOOL player::OnInitDialog()函数中写入 hour=0; minute=0; second=0; UpdateData(true); m_time。Format(”%d:%d:%d",hour,minute,second); UpdateData(false); 让时间进度一开始为0; 同样的方法添加成员函数void player::OnTimer(UINT nIDEvent) 让时间进度能随着播放的音视频的进度而走。 添加成员函数 void player::OnDestroy() { KillTimer(0); CDialog::OnDestroy(); // TODO: Add your message handler code here }在退出播放器对话框时,让计数器停止。 添加全局变量BOOL qian=false;若qian为true时,表示点击了前进或后退,此时点击播放时,继续播放.双击播放,点击确定, 添加以下成员函数 void player::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;} }点击播放时,也开始启动计时器 同理,前进的成员函数 void player::Onqianjing() 后退的成员函数 void player::Onhoutui() 停止得成员函数 void player::Ontingzhi() 停止时,时间进度变为0,同时计数器停止. 暂停的成员函数 void player::Onzanting() { CString strtemp; 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); } } 点击暂停时,显示继续,此时计数器停止。当点击继续时,计数器又开始运行,同时显示出暂停。 定义成员变量int shape=2;默认值为2,表示默认顺序播放.在循环,顺序,随机播放函数中,分别将shape赋值为1,2,3; 创建成员函数 void player::shunxubofang() { CStdioFile *fsp; if(ntype==3) {fsp=new CStdioFile(".\\list.txt”,CFile::modeRead);} else if(ntype==1) {fsp=new CStdioFile("。\\list1.txt”,CFile::modeRead);} else if(ntype==4) {fsp=new CStdioFile(”。\\list21。txt”,CFile::modeRead);} else if(ntype==5) {fsp=new CStdioFile(”。\\list22.txt”,CFile::modeRead);} else if(ntype==6) {fsp=new CStdioFile(”.\\list31.txt",CFile::modeRead);} else if(ntype==7) {fsp=new CStdioFile(”。\\list32.txt”,CFile::modeRead);} 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; 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("%d”,m_silder。GetPos()); UpdateData(false); }使声音滑块所对应的数字呈现在静态文本框中。同时在OnInitDialog()中加入 m_silder。SetRange(0,100); m_silder.SetPos(50); nowvolume(); 定义滑块的长度为100,刚开始时是50。 音减的函数中void player::Onyinjiang() { // 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(”静音”)==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,此时文字为“静音". 添加全局变量 bool quan=false;当其为true时,为全屏显示,默认为false. 双击全屏,添加成员函数 void player::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的值,双击之后,来决定是全屏还是退出全屏。 (2) 图片模块 新建对话框,建发与视频播放器的相同。在对话框中引入三个控件,一个图像的,ID设为ID_showing,,类型为位图,在样式中选择凹陷,图像居中,真实图像大小。 两个Button,一个为上一张,一个为下一张。建立类向导,方法与播放器相同,类名为photo。构建函数void photo::getname(CString pn,int num1,int num2,int nt) { m_path=pn; now=num1; sum=num2; type=nt; } 将前台数据传给后台全局变量m_path为播放地址,now为播放地址序列,sum为总播放数量,type为播放列表的类型。 创建函数 void photo::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++,新建工程.选择MFC AppWizard(exe),在工程名字中填入media1,如图所示 点击确定。选择创建类型为基本对话框。一直点击确定。最后打开对话框,删除里面所有的控件。 右击media1 resources,点击插入,选择新建Meun,打开Meun菜单,新建三个主菜单:应用程序,媒体类型,目录设定.建立次菜单如下图所示 主菜单 次菜单ID 次菜单标明 应用程序 ID_tuichu 退出 媒体类型 ID_yinyue 音乐 媒体类型 ID_tupian 图片 媒体类型 ID_shipin 视频 目录设定 ID_mulu 设定监视目录 在media1Dlg。cpp中头文件下加入CMenu m_Menu;并在BOOL CMedia1Dlg::OnInitDialog()函数中加入m_Menu。LoadMenu(IDR_MENU1); SetMenu(&m_Menu);这样就可以菜单嵌入该对话框中。建立全局函数int type=1,默认值为1。打开新建的菜单,右击应用程序下的退出,建立类向导,在Messages中选择COMMAND,再点击Add Function。再点击Edit Code,打开函数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, UINT nIndex,BOOL bSysMenu), 接着直接将函数copy给此类中。 将函数加入后,运行后,点击不同类型的媒体后,会看到前面打勾。 在对话框的函数中建立全局变量bool mulu=true;默认值为true,表示显示播放列表。接下来在设定监视目录中,与前面同样的方法,建立类向导,选择两个函数,此函数与音乐的函数一样,如下void CMedia1Dlg::Onmulu() { if(mulu) { m_list.ShowWindow(SW_HIDE); mulu=false; } else { m_list。ShowWindow(SW_SHOW); mulu=true;} } void CMedia1Dlg::OnUpdatemulu(CCmdUI* pCmdUI) { // TODO: Add your command update UI handler code here 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;在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的大小与图片的大小想适应.运行后,结果如图。 在对画框中引入四个组合框,标题分别为播放列表,最进播放列表,最近追加项目,最近播放项目.分别在播放列表,最近追加项目,最近播放项目中加入一个列表框。排列如下图 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 视频播放列表 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){ char szFileFilter[]= ”Medal File(*。avi,*.wmv,*。asf)|*。avi;*.wmv;*。asf|” "RMVB File(*。rmvb)|*。rmvb|" ”MP4 File(*。mp4)|*.mp4|” "Mkv File(*.mkv)|*。mkv|” "All File(*.*)|*.*||"; 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<m_list。GetCount();i++) { CString strtemp; 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代表图片.函数的随后还要调用保存函数.视频的保存函数为else if(type==3||type==6||type==7) { ofstream file,file1; file。open(”.\\list。txt"); file1。open(”.\\list31。txt”); for(int i=0;i<m_list。GetCount();i++) { CString strtemp; m_list。GetText(i,strtemp); strtemp+=”\n”; file<〈strtemp; } for( i=0;i〈m_zuijia。GetCount();i++) { CString strtemp; m_zuijia.GetText(i,strtemp); strtemp+=”\n”; file1<〈strtemp; } file1.close(); file.close(); } 用此文件函数,还需要添加头文件#include “fstream。h"。音乐与图片与之相同,只是所保存的文件不同.接下来是保存最近播列表。创建成员函数 void CMedia1Dlg::zuibobaocun() {ofstream file2; if(type==1||type==4||type==5) {file2.open(".\\list22。txt");} else if(type==3||type==6||type==7) {file2。open(”。\\list32。txt”);} else if(
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服