欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    vc多媒体播放器.docx

    • 资源ID:2012476       资源大小:970.69KB        全文页数:39页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    vc多媒体播放器.docx

    武汉理工大学专业课程设计3(面向对象程序设计)课程设计说明书目录1.基本功能描述12.设计思路13.软件设计33.1设计步骤33.2界面设计63.3关键功能的实现94结论与心得体会165参考文献176思考题177附录187.1调试报告187.2测试结果207.3关键源代码2138多媒体播放器1. 基本功能描述多媒体播放软件现在几乎成为每一台家用计算机的装机必备软件,比较流行的有迅雷播放器、Windows Media Player以及金山影霸等等,通过这些软件能够播放RM、RMVB、MP3、MPEG、DAT等多种格式的多媒体文件。这些商业软件在功能上已经做的相当完备,也符合大多数普通消费者的的胃口,但很多人电脑里总是安装了多种播放器,因为不同的播放器有不同的特点,不是每个人都执著于用一款播放器,所以设计一款符合自己使用习惯的播放器是很有可行性的。使用VC+6.0强大的MFC、AppWizard、Class Wizard和其中的多种控件可以很方便地建立各种应用程序。同时想要实现更高级更复杂的功能,也可以借助ActiveX控件资源,用这些现有的控件资源,可以省去自己编程的复杂过程,从而实现更高级的功能。本次课程设计要使用VC+6.0自带的一个ActiveX控件Windows Media Player控件,建立自己的多媒体播放器。此多媒体播放器具有打开文件、播放、暂停、全屏、音量调节、快进、快退等基本播放功能,并且可以播放:*.mp3,*.wma,*.mdi,*.wav,*avi,*dat等格式的音频视频文件。同时还具有自制的可隐藏的播放列表,并且可以在播放模式中选择顺序播放、随机播放、单曲循环三种方式随机即模式放器具有打开文件、播放、暂停、关闭,就是每个人都执著与111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111。同时,我也添加了保存列表的功能,当下一次打开时能保留上一次保存的播放列表,当然也添加了删除列表和删除当前的功能,更具人性化。2. 设计思路根据各个按钮控件功能以及Windows Media Player控件的特点,首先要在头文件中将CWMPControl,CWMPSettings等类的对象的绑定以及定义,在后面的程序中需要调用这些类的成员函数。对于打开文件按钮,需要调用通用文件对话框类,并利用listbox中的AddString函数把选中的文件添加到播放列表中,在MFC学习中有涉及。对于一些基本的功能的实现,如播放、暂停、全屏、音量增大、音量减小、静音、快进、快退等功能,主要调用CWMPControl和CWMPPlayer类中的成员函数来进行实现。对于播放列表,这次设计使用了SetWindowPos函数来改变一个子窗口弹出的尺寸和方向,并一些相关的函数实现了保存列表、删除列表、删除当前的功能。对应播放列表,我还添加了播放模式选择的功能,提供了顺序播放、随即播放、单曲循环三种选择。这当中运用的ontimer函数和settimer函数来控制播放模式。参照以上的设计开始初始化打开?设置文件类型过滤添加到播放列表YN读取保存的播放列表播放播放控制播放模式退出?N退出Y思想,流程图如图1所示:图1 流程图3.软件设计3.1设计步骤首先,打开Microsoft Visual Studio6.0软件,新建一个工程如图2所示,以ZhuangWenfeng为工程名,然后将此工程定义为基于对话框的MFC应用程序如图3所示,点击完成就成功建立了一个基于对话框的工程。图2 工程建立图3基于对话框的MFC程序在建立好工程之后,首先是Windows Media Player控件的添加:建立空白对话框之后,在对话框的空白处单击鼠标右键,选择Insert ActiveX Control菜单项。选择Windows Media Player控件,如图4所示。加入控件后,此时该控件与该对话框并没有联系,需要对其进行变量的关联。图4 Windows Media Player控件的添加添加完该控件之后可以发现,该控件与右边控件工具栏添加的控件的形式与功能完全不同,是一种更为高级的控件,将该控件名改为IDC_player,如图5所示。图5 Windows Media Player控件虽然已已经添加了该控件,但是可以发现,改控件没有与工程中的对话框发生任何联系,所以需要对其进行变量的关联,所属类为ZhuangWenfeng类,变量类型为CWPPlayer4如图6所示。图6 关联变量关联变量之后,才算是真正的添加完了该控件,可以发现在关联变量之后,控件工具栏多了Windows Media Player控件的选项,并且在Source Files中增加了17个类,相应的头文件也增加了17个,如图7所示。图7 添加控件后的变化其中最主要的类为Cwmpplayer4,Cwmpcontrols,Cwmpmedia,Cwmpplaylist,Cwmpsettings五大类。Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功能的实现,提供了与Windows Media Player控件进行交互的基本方法,其中部分成员函数还能够进一步获取得到其他相关类对象的实例;Cwmpcontrols类主要是对控件的更多的操作;Cwmpmedia类主要是对于媒体文件资源的一些操作;Cwmpplaylist类主要是关于播放列表的操作;Cwmpsettings类主要是对于媒体文件中的一些基本设置的操作。对于该控件的添加以及内部函数的理解需要较多时间熟悉,添加完此关键控件之后,进行界面的设计。3.2界面设计首先是打开按钮,用于媒体文件的打开。然后依次是,播放、暂停、全屏、快进、快退、音量增大、音量减小、静音、播放停止、退出等按钮。对其进行变量的关联,以及ID的修改,修改结果如表1、表2所示:表1 控件ID以及关联变量控件Caption按钮ID关联变量类型关联变量名称WMPlayerIDC_playerCWMPlayer4m_ZhuangWenfeng表2 控件ID以及对应响应函数控件Caption按钮ID消息响应函数打开IDC_openOnopen播放IDC_playOnplay暂停IDC_pauseOnpause全屏IDC_fullscreenOnfullscreen播放列表IDC_listOnlist列表框IDC_LIST1OnDblclkList1快进IDC_fastforwardOnfastforward快退IDC_fastreverseOnfastreverse+(音量增加)IDC_addvolOnaddvol-(音量减小)IDC_decvolOndecvol静音IDC_muteOnmute表2 控件ID以及对应响应函数控件Caption按钮ID消息响应函数停止IDC_stopOnstop保存列表IDC_saveOnsave删除列表IDC_dellistOndellist删除当前IDC_dellistcurOndellistcur退出IDC_exitOnexit关于IDC_aboutOnabout以上为有对应控件的对象的关联,除了有对应控件的,还需要有Windows Media Player控件所生成的17个类中的几个重要的类进行对象的定义,而可知,对于成员对象的定义和成员函数的声明都放在头文件中,此次设计共主要用到其中3个类 ,因为设计了一个退出提醒弹出框,所以也要对其定义,具体如表3所示:表3 其他类及对应对象类名对象名类名对象名CWMPControlsm_ControlCStringm_PathNameCWMPSettingsm_SettingCheckCCheck除了对各个控件关联变量以及消息响应函数,还要对对话框类进行消息响应函数的关联,因为此次设计中添加了播放模式选择的功能,所以需要用到WM_TIMER消息响应函数以及SetTimer()和OnTimer()函数来实现这项功能,将对话框类进行该消息响应函数的关联并书写程序。添加方法如图8所示。图8 添加WM_TIMER消息响应函数 最终得到各个空间分布后的界面如图9所示。图9 多媒体播放器界面除了以上主对话框外,我还对ABOUTBOX进行了重新设计,也自制了一个Check对话框,其中ABOUTBOX如图10所示。Check对话框是在用户点击退出按钮自动弹出的提醒窗口,主要用于防止用户误按关闭按钮导致程序关闭,有利于用户的使用,增强软件的友好性,如图11所示。图10 修改后的ABOUTBOX对话框 图11 提醒对话框 关于菜单的制作,首先,需要在ResourceView中加入资源Menu,后增加对应的菜单项以及菜单自己布局,下拉菜单则需要和按钮关联,其方法是将其ID和按钮的ID一样,菜单布局图12所示。图 12 菜单栏3.3关键功能的实现对于各个函数的介绍,本文以关键代码以及注释的方式进行介绍,首先介绍主对话框中函数的实现以及说明:(1)Onopen();打开函数void CZhuangWenfengDlg:Onopen() char szFileFilter="All File(*.*)|*.*|""AVI File(*.avi)|*.avi|""Mp3 File(*.mp3)|*.mp3|""MPEG File(*.mpeg)|*.mpeg|""Media File(*.asf)|*.asf|""Video File(*.dat)|*.dat|""MPGA File(*.mpga)|*.mpga|""Wave File(*.wav)|*.wav|""Movie File(*.mov)|*.mov|""MidFile(*.mid;*,rmi)|*.mid;*.rmi|""WmaFile(*.wma)|*.wma|""Rmvb File(*.rmvb)|*.rmvb|""All File(*.*)|*.*|" /可选的文件类型 CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR,szFileFilter); /OFN_ALLOWMULTISELECT是允许选择多个文件 OFN_NOCHANGEDIR是不改变当前目录 POSITION pos=dlg.GetStartPosition(); if(dlg.DoModal()=IDOK) while(pos!=NULL) m_pathname=dlg.GetNextPathName(pos);/得到完整的文件名,包括目录名和扩展名 m_list.AddString(m_pathname);/增加到播放列表 其中难点在于对于陌生函数的理解,由于类数目较多,各类又有各自不同的成员函数,运用起来比较困难。除了调用通用文件对话框和较为熟悉之外,其他的函数都是平时没有见过的。播放列表中获取路径名是靠的添加主要依靠于GetNextPathName()函数,而 m_list.AddString()函数是将项目名添加到播放列表中。 (2)Onlist();播放列表按钮函数和OnDblclkList1();播放列表函数: void CZhuangWenfengDlg:Onlist() flag=!flag; if(!flag) SetWindowPos(NULL,0,0,400,430,SWP_NOMOVE);/播放列表初始位置状态else SetWindowPos(NULL,0,0,590,430,SWP_NOMOVE);/点击按钮后播放列表位置状态对于播放列表按钮,设计在那的功能是运行软件时播放器的播放列表是隐藏的,当点击按钮时,播放列表弹出。为了实现这个功能,我将播放列表LIST1和播放列表按钮关联起来,关系设为控制。为此,在程序定义了一个全局变量flag,将其设为一个标志,在初始化时定义窗口无相对位移,当点击按钮是,窗口位移,因此就实现了播放列表的隐藏和出现的功能。而对于播放列表,则要求它实现双击播放功能,所以对列表控件增加一个消息映射,并选择双击消息函数响应,如图13所示。在其中编程时也加入了执行响应函数SetTimer(),当点击函数时就开始创建计数器,以便实现播放模式的功能。图13 播放列表消息映射函数设置 具体程序如下所示: void CZhuangWenfengDlg:OnDblclkList1();/双击播放函数 CString str int index=m_list.GetCurSel();/获取选择的行数 m_list.GetText(index,str); m_ZhuangWenfeng.SetUrl(str);/播放 m_pathname=str; SetTimer(1,1000,NULL); /在点击播放时就创建计时器 每隔1秒就自动执行下响应函数ontimer() (3)Onplay();播放函数及其他多媒体播放控制按钮void CZhuangWenfengDlg:Onplay() m_Control.play(); /暂停后继续播放如同播放函数所示,其他控制播放状态的函数都可以直接调用添加的控件的类的对象调用实现,按钮响应函数和调用的函数关系如表4所示。表4响应函数和调用函数关系响应函数调用函数响应函数调用函数Onfastreverse()m_Control.fastReverse()Onfulscreen()m_ZhuangWenfeng.SetFullScreen(1)Onfastforward()m_Control.fastForward()Onmute()m_Setting.SetVolume(m_Setting.GetMute();Onstop()m_Control.stop()Onaddvol()m_Setting.SetVolume(m_Setting.GetVolume()+10)Onpause()m_Control.pause()Ondecvol()m_Setting.SetVolume(m_Setting.GetVolume()-10(4)播放列表状态这款播放器设计了保存播放列表、删除播放列表、删除当前三种对播放列表状态的控制,其中函数主要调用了m_list类中的函数,在初始化是加入了一个读取上次保存的播放列表的指针函数,增加了播放列表的人性化。具体函数如下:void CZhuangWenfengDlg:Onsave() CStdioFile file;file.Open(".list.txt",CFile:modeCreate|CFile:modeReadWrite|CFile:typeText);/打开指定文件for(int i=0;i<m_list.GetCount();i+) CString strtemp; m_list.GetText(i,strtemp); strtemp+="n" file.WriteString(strtemp);/保存播放列表 void CZhuangWenfengDlg:Ondellist() CStdioFile file; m_list.ResetContent();/删除列表 file.Open(".list.txt",CFile:modeCreate);void CZhuangWenfengDlg:Ondellistcur() m_list.DeleteString(m_list.GetCurSel();/删除当前光标所选择的行Onsave();/自动保存删除某一行后的播放列表 (5)播放模式播放模式的选择需要用到WM_TIMER消息如图14所示,以及适时调用SetTimer()和OnTimer()函数。初始化时默认设置为顺序播放,当双击播放时就开始创建计数器,每1秒就执行以下OnTimer函数。而OnTimer函数就会获得播放状态,如果当前的播放完了,就检测单选按钮在哪,从而选择执行哪个程序。如果是顺序播放,就自动执行下一项目;如果是随即播放,就在0-列表的文件数种产生一个随即数,然后执行;而如果是单曲循环,那么就一直执行当前文件。图14 M_TIMER消息添加初始化程序如下:m_list.SetCurSel(0);/选择第一行m_list.GetText(m_list.GetCurSel(),m_pathname);(CButton *)GetDlgItem(IDC_RADIO1)->SetCheck(true);/默认播放模式为顺序播放 计数器函数OnTimer程序如下:void CZhuangWenfengDlg:OnTimer(UINT nIDEvent) int index=m_ZhuangWenfeng.GetPlayState();/获取播放状态if(index=1)/如果播放完成if(CButton *)GetDlgItem(IDC_RADIO1)->GetCheck()/如果是顺序播放CString str;int index=m_list.GetCurSel()+1;if(index>=m_list.GetCount() index=0;/如果播放完最后一曲就自动播放第一首m_list.GetText(index,str);m_ZhuangWenfeng.SetUrl(str);m_list.SetCurSel(index);/自动置光标/这样就实现了顺序播放if(CButton *)GetDlgItem(IDC_RADIO2)->GetCheck()/随机播放srand(time(0);/目的在于每次都能产生不同的随机数序列m_list.SetCurSel(rand()%m_list.GetCount();/随机选择0-m_list.GetCount()-1的任意一个数即随即选择m_list里的文件m_list.GetText(m_list.GetCurSel(),m_pathname);m_ZhuangWenfeng.SetUrl(m_pathname);if(CButton *)GetDlgItem(IDC_RADIO3)->GetCheck()/单曲循环m_list.GetText(m_list.GetCurSel(),m_pathname);m_ZhuangWenfeng.SetUrl(m_pathname);CDialog:OnTimer(nIDEvent); (6)Onabout()和Onexit()函数因为调用自身编辑的对话框并且修改了工程中的ABOUTBOX资源,所以也要对其进行一定的修改。首先,是对Onabout()函数的修改:void CZhuangWenfengDlg:Onabout() CAboutDlg aboutDlg; aboutDlg.DoModal();其次,是对Onexit()函数的重载。对于添加自制的对话框,制作方面较为简单不作介绍,在此要介绍的是自制对话框的添加以及对应类和头文件的添加。在制作好对话框后,利用ClassWizard对该对话框进行类的关联,由于要调用该对话框,故要生成该对话框类自身的对象如图15所示。图14 生成自制对话框的新类选择Create a new class后需要输入一个类名CCheck,在输入确定之后会在工程的FileView中增加一个对应的Check.cpp和Check.h文件,之后便可以对该自制对话框类及其对象进行操作。故调用该对话框的方法就是如下所示,在完成退出时还要删除计数器,释放内存。void CZhuangWenfengDlg:Onexit() CCheck Check; /生成CCheckBox类的对象CheckBox if(Check.DoModal()=IDOK) /弹出对应的模态对话框 CDialog:OnCancel(); /点击确定则退出KillTimer(1);/退出程序时删除计数器 (7)菜单栏的添加制作以及功能 菜单栏的制作和添加不难,只要将其对应到对话框中即可,文中不再赘述。各个菜单中的菜单项的功能,只要将对应的菜单项改成与对应功能的按钮控件的ID相同即可方便快速地实现。4结论与心得体会经过一周的面向对象程序课程设计,我学到了很多。在这一周的实际动手学习中,我对VC+这门课程有了更深刻的认识,熟悉了用MFC 创建基于对话框的应用程序,让我对于MFC编程的方法有了更新更全面的认识。这次课程设计我做了多媒体视频播放器的设计,播放器主要对常用的多媒体格式的文件实现播放和控制。接触题目开始做后,同学们手中的VC+6.0都没有Active Movie这一控件,只能选用Windows Media Player控件,而同时网上虽然有点关于Windows Media Player控件的资料,但按照网上的方法来添加控件并编程却根本无法编译。所以对于该控件的添加方法和编程基本是在摸索实践中出来的。C+作为我们的主要专业课程之一,开始觉得那些程序枯燥无味,但在这次课程设计后我发现在自己一点一滴的努力中对C+程序的兴趣也在增加。可是在制作的过程中,编程总是运行错误成为了我非常大的困难之一,常常在悉心时久的编程后,运行出现错误,往往是越改越错,导致此段代码需要重新编写,但在前面代码的不断出错与修改的同时,我们也学到了更多,领悟到了上课所没有领会的知识点,所以在后面的编程中就越编越顺。在程序设计时不要妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。最终终于顺利完成了本人所想实现的大部分功能,掌握了一个全新的类的部分功能的使用,感觉受益匪浅,但也由于本人能力有限,才疏学浅,很多地方还有疏漏,没有实现一些想要实现的功能。最后,我觉的做 C+语言课程设计是十分有意义的,而且是十分有必要的,我们在课堂上掌握的只是专业课的理论知识,而这次课程设计为我们提供了很好的实践平台。让我们增强了动手编程,自己调试,寻找错误的能力,为以后进一步的学好 C+语言提供了基础。5参考文献1周长发.Visual C+.NET多媒体编程M.电子工业出版社.20022揣锦华.面向对象程序设计与VC+实践M.西安电子科技大学出版社.20053郑阿奇.Visual C+教程M.北京:机械工业出版社.20044Steve Mack.流媒体宝典.电子工业出版社.20035老虎工作室.举一反三Visual C+程序设计实战训练M.北京:人民邮电出版社.20046思考题1、控件自带的类和本程序中的类是如何共同作用的?答:首先,控件中的类必然会在对话框的主程序中被调用,那么就要在主程序中#include入对应类的头文件;然后对需要用到的类生成对应的对象以实现类中函数的使用。在完成控件自带类的函数在程序中的使用之后,还需要调用对话框自身的函数,比如WM_TIMER消息及消息响应函数OnTimer()等函数,以及各控件对应的消息响应函数,并且OnInitDialog()函数等也需要做一些改动,添加一些与控件类有关的函数。如此便可以实现控件自带类和本程序中的类的共同作用。2、说明程序中调用的控件函数的作用?答:各控件有不同的函数对应,分别实现不同功能,分别为:表5 调用的空间函数的作用功能控件函数功能控件函数打开Onopen()+(音量增大)Onaddvol()播放Onplay()-(音量减小)Ondecvol()暂停Onpause()静音Onmute()停止Onstop()退出Onexit()播放列表Onlist()保存列表Onsave()快进Onfastforward()删除列表Ondellist()快退Onfastreverse()删除当前Ondellistcur()全屏Onfullscreen()关于Onabout()7附录7.1调试报告在设计过程中出现了许多错误,利用VC+6.0中的编译器进行错误的查找,根据提示的错误,对处错误进行改正。小错误较多在此不赘述,都是一些与未加对应头文件,未定义正确变量名有关的小错误,也较容易纠正,下文将叙述调试过程中的错误以及改正办法(1)问题一在设计播放列表时,当双击播放列表里的成员时并没有播放文件,当时一直修改代码却没有得到改变,以至于一段时间后用了一个按钮代替了双击播放的功能如图15所示。图15 调试结果1后来又觉得不甘心,所以就一直找资料,最后在网上的资料里学到了解决这个问题的方法。实现双击播放功能要先对播放列表增加一个双击消息映射函数OnDblclkList1(),然后再编代码,这样就实现双击播放的功能。 (2)问题二图16 类绑定此段程序在OnInitDialog()函数中,连接编译都未报错,但是播放、暂停等多个按钮控件无法工作。后考虑到其他类都进行了的类的绑定,所以也要对CWMPControls类进行绑定,其中static_cast相当于将某一对象和赋值符号右边的值进行绑定,由于是静态绑定,故绑定后不再改变,而后续程序中出现的m_Control对象却并未出现对应的绑定,如图16所示。添加代码:m_Control = static_cast<CWMPPlaylist>(m_WMPlayer.GetCurrentControl();之后,后续的控件的操作可以正常进行了。 (3)问题三 对于停止按钮编程时,一开始直接调用了m_Control.stop函数,如图17所示,但调试时当点击停止按钮时,本次播放时停止了但是紧接着却继续播放下一曲目。后来经过分析发现,原来是计数函数的问题,由于添加了播放模式的功能,当停止时计数器并没有停止工作,当下一轮响应时就执行了继续播放的功能,所以后来又加了一句删除计数器的代码:KillTimer(1),如图18所示,问题就得到了解决。图17 原来的代码 图18 修改后的代码 (4)问题四 在设计退出按钮是想要设计一个退出提醒功能,为了防止用户在使用时不小心因为按错而误关程序,一开始一直不得要领,后来经过询问同学得到了想要的答案,那新添加一个对话框,然后新建一个类,在增加一个头文件#include "Check.h",然后再进行编程,具体实现功能如图19所示。图19 退出提醒功能7.2测试结果图20 运行时读取上一次保存的播放列表 图21视频播放暂停、全屏、音量功能等图22 刚运行时隐藏播放列表 图23 关于对话框图24 菜单功能 图25 退出提醒框7.3关键源代码 在头文件处,如下添加:#include "wmpcontrols.h" /用到 wmpcontrols对象中的函数#include "wmpplayer4.h"#include "wmpsettings.h"#include "Check.h"/退出时弹出框提醒 定义全局变量如下:int flag;/全局变量CString m_pathname; 在初始化对话框函数OnInitDialog(),如下添加: SetWindowPos(NULL,0,0,400,430,SWP_NOMOVE);/无相对移动 播放列表收缩m_list.SetHorizontalExtent(1000);/设置列表框可水平滚动的宽度到最大CStdioFile *fsp=new CStdioFile(".list.txt",CFile:modeRead);/读取保存的播放列表的 list.txt 文件CString str;while(fsp->ReadString(str)m_list.AddString(str);fsp->Close();delete fsp;m_list.SetCurSel(0);/选择第一行m_list.GetText(m_list.GetCurSel(),m_pathname);(CButton *)GetDlgItem(IDC_RADIO1)->SetCheck(true);/默认播放模式为顺序播放m_Control = static_cast<CWMPControls>(m_ZhuangWenfeng.GetControls();m_Setting=m_ZhuangWenfeng.GetSettings();在主体函数部分,如下添加: void CZhuangWenfengDlg:Onopen() char szFileFilter="All File(*.*)|*.*|" "AVI File(*.avi)|*.avi|" "Mp3 File(*.mp3)|*.mp3|" "MPEG File(*.mpeg)|*.mpeg|" "Media File(*.asf)|*.asf|" "Video File(*.dat)|*.dat|" "MPGA File(*.mpga)|*.mpga|" "Wave File(*.wav)|*.wav|" "Movie File(*.mov)|*.mov|" "Mid File(*.mid;*,rmi)|*.mid;*.rmi|" "Wma File(*.wma)|*.wma|""Rmvb File(*.rmvb)|*.rmvb|" "All File(*.*)|*.*|"/可选的文件类型 CFileDialog dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR,szFileFilter); /OFN_ALLOWMULTISELECT是允许选择多个文件 OFN_NOCHANGEDIR是不改变当前目录 POSITION pos=dlg.GetStartPosition(); if(dlg.DoModal()=IDOK) while(pos!=NULL) m_pathname=dlg.GetNextPathName(pos);/得到完整的文件名,包括目录名和扩展名 m_list.AddString(m_pathname);/增加到播放列表 void CZhuangWenfengDlg:Onlist() flag=!flag; if(!flag) SetWindowPos(NULL,0,0,400,430,SWP_NOMOVE);/播放列表初始位置状态elseSetWindowPos(NULL,0,0,590,430,SWP_NOMOVE);/点击按钮后播放列表位置状态void CZhuangWenfengDlg:OnDblclkList1() /双击播放函数 CString str; int index=m_list.GetCurSel();/获取选择的行数 m_list.GetText(index,str); m_ZhuangWenfeng.SetUrl(str);/播放 m_pathname=str; SetTimer(1,1000,NULL); /在点击播放时就创建计时器 每隔1秒就自动执行下响应函数ontimer()void CZhuangWenfengDlg:Onplay() m_Control.play(); /暂停后继续播放void CZhuangWenfengDlg:Onsave() CStdioFile file; file.Open(".list.txt",CFile:modeCreate|CFile:modeReadWrite|CFile:typeText); for(int i=0;i<m_list.GetCount();i+) CString strtemp; m_list.GetText(i,strtemp); strtemp+="n" file.WriteString(strtemp);/保存播放列表 void CZhuangWenfengDlg:Onexit() CCheck Check; /生成CCheck类的对象Checkif(Check.DoModal()=IDOK)/弹出对应的模态对话框CDialog:OnCancel();/退出KillTimer(1);/退出程序时删除计数器void CZhuangWenfengDlg:Ondellist() CS

    注意事项

    本文(vc多媒体播放器.docx)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开