目录1.基本功能描述.......................................................................................................12.设计思路...............................................................................................................13.软件设计...............................................................................................................33.1设计步骤.........................................................................................................33.2界面设计.........................................................................................................63.3关键功能的实现...............................................................................................94结论与心得体会..................................................................................................165参考文献..............................................................................................................176思考题..................................................................................................................177附录......................................................................................................................187.1调试报告.......................................................................................................187.2测试结果.......................................................................................................207.3关键源代码....................................................................................................21武汉理工大学《专业课程设计3(面向对象程序设计)》课程设计说明书1多媒体播放器1.基本功能描述多媒体播放软件现在几乎成为每一台家用计算机的装机必备软件,比较流行的有迅雷播放器、WindowsMediaPlayer以及金山影霸等等,通过这些软件能够播放RM、RMVB、MP3、MPEG、DAT等多种格式的多媒体文件。这些商业软件在功能上已经做的相当完备,也符合大多数普通消费者的的胃口,但很多人电脑里总是安装了多种播放器,因为不同的播放器有不同的特点,不是每个人都执著于用一款播放器,所以设计一款符合自己使用习惯的播放器是很有可行性的。使用VC++6.0强大的MFC、AppWizard、ClassWizard和其中的多种控件可以很方便地建立各种应用程序。同时想要实现更高级更复杂的功能,也可以借助ActiveX控件资源,用这些现有的控件资源,可以省去自己编程的复杂过程,从而实现更高级的功能。本次课程设计要使用VC++6.0自带的一个ActiveX控件——WindowsMediaPlayer控件,建立自己的多媒体播放器。此多媒体播放器具有打开文件、播放、暂停、全屏、音量调节、快进、快退等基本播放功能,并且可以播放:*.mp3,*.wma,*.mdi,*.wav,*avi,*dat等格式的音频视频文件。同时还具有自制的可隐藏的播放列表,并且可以在播放模式中选择顺序播放、随机播放、单曲循环三种方式。同时,我也添加了保存列表的功能,当下一次打开时能保留上一次保存的播放列表,当然也添加了删除列表和删除当前的功能,更具人性化。2.设计思路根据各个按钮控件功能以及WindowsMediaPlayer控件的特点,首先要在头文件中将CWMPControl,CWMPSettings等类的对象的绑定以及定义,在后面的程序中需要调用这些类的成员函数。对于打开文件按钮,需要调用通用文件对话框类,并利用listbox中的AddString函数把选中的文件添加到播放列表中,在MFC学习中有涉及。对于一些基本的功能的实现,如播放、暂停、全屏、音量增大、音量减小、静音、快进、快退等功能,主要调用CWMPControl和CWMPPlayer类中的成员函数来进行实现。对于播放列表,这次设计使用了SetWindowPos函数来改变一个子窗口弹出的尺寸武汉理工大学《专业课程设计3(面向对象程序设计)》课程设计说明书2和方向,并一些相关的函数实现了保存列表、删除列表、删除当前的功能。对应播放列表,我还添加了播放模式选择的功能,提供了顺序播放、随即播放、单曲循环三种选择。这当中运用的ontimer函数和settimer函数来控制播放模式。参照以上的设计思想,流程图如图1所示:图1流程图开始初始化打开?设置文件类型过滤添加到播放列表YN读取保存的播放列表播放播放控制播放模式退出?N退出Y武汉理工大学《专业课程设计3(面向对象程序设计)》课程设计说明书33.软件设计3.1设计步骤首先,打开MicrosoftVisualStudio6.0软件,新建一个工程如图2所示,以ZhuangWenfeng为工程名,然后将此工程定义为基于对话框的MFC应用程序如图3所示,点击完成就成功建立了一个基于对话框的工程。图2工程建立图3基于对话框的MFC程序在建立好工程之后,首先是WindowsMediaPlayer控件的添加:建立空白对话框武汉理工大学《专业课程设计3(面向对象程序设计)》课程设计说明书4之后,在对话框的空白处单击鼠标右键,选择InsertActiveXControl菜单项。选择WindowsMediaPlayer控件,如图4所示。加入控件后,此时该控件与该对话框并没有联系,需要对其进行变量的关联。图4WindowsMediaPlayer控件的添加添加完该控件之后可以发现,该控件与右边控件工具栏添加的控件的形式与功能完全不同,是一种更为高级的控件,将该控件名改为IDC_player,如图5所示。图5WindowsMediaPlayer控件武汉理工大学《专业课程设计3(面向对象程序设计)》课程设计说明书5虽然已已经添加了该控件,但是可以发现,改控件没有与工程中的对话框发生任何联系,所以需要对其进行变量的关联,所属类为ZhuangWenfeng类,变量类型为CWPPlayer4如图6所示。图6关联变量关联变量之后,才算是真正的添加完了该控件,可以发现在关联变量之后,控件工具栏多了WindowsMediaPlayer控件的选项,并且在SourceFiles中增加了17个类,相应的头文件也增加了17个,如图7所示。图7添加控件后的变化武汉理工大学《专业课程设计3(面向对象程序设计)》课程设计说明书6其中最主要的类为Cwmpplayer4,Cwmpcontrols,Cwmpmedia,Cwmpplaylist,Cwmpsettings五大类。Cwmpplayer4类主要是关于对其他类的对象的调用以及基本的控件功能的实现,提供了与WindowsMediaPlayer控件进行交互的基本方法,其中部分成员函数还能够进一步获取得到其他相关类对象的实例;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武汉理工大学《专业课程设计3(面向对象程序设计)》课程设计说明书7静音IDC_muteOnmute表2控件ID以及对应响应函数控件Caption按钮ID消息响应函数停止IDC_stopOnstop保存列表IDC_saveOnsave删除列表IDC_dellistOndellist删除当前IDC_dellistcurOndellistcur退出IDC_exitOnexit关于IDC_aboutOnabout以上为有对应控件的对象的关联,除了有对应控件的,还需要有WindowsMediaPlayer控件所生成的17个类中的几个重要的类进行对象的定义,而可知,对于成员对象的定义和成员函数的声明都放在头文件中,此次设计共主要用到其中3个类,因为设计了一个退出提醒弹出框,所以也要对其定义,具体如表3所示:表3其他类及对应对象类名对象名类名对象名CWMPControlsm_ControlCStringm_PathNameCWMPSettingsm_SettingCheckCCheck除了对各个控件关联变量以及消息响应函数,还要对对话框类进行消息响应函数的关联,因为此次设计中添加了播放模式选择的功能,所以需要用到WM_TIMER消息响应函数以及SetTimer()和OnTimer()函数来实现这项功能,将对话框类进行该消息响应函数的关联并书写程序。添加方法如图8所示。图8添加WM_TIMER消息响应函数武汉理工大学《专业课程设计3(面向对象程序设计)》课程设计说明书8最终得到各个空间分布后的界面如图9所示。图9多媒体播放器界面除了以上主对话框外,我还对ABOUTBOX进行了重新设计,也自制了一个Check对话框,其中ABOUTBOX如图10所示。Check对话框是在用户点击退出按钮自动弹出的提醒窗口,主要用于防止用户误按关闭按钮导致程序关闭,有利于用户的使用,增强