用C++编写音乐播放器
5.本系统的源代码如下 // myplayerDlg.cpp : implementation file //
#include "stdafx.h" #include "myplayer.h" #include "myplayerDlg.h"
#ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif
CAboutDlg();
// Dialog Data //{{AFX_DATA(CAboutDlg) enum { IDD = IDD_ABOUTBOX }; //}}AFX_DATA
// ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CAboutDlg) protected: virtual void DoDataExchange(CDataExchange* pDX); //}}AFX_VIRTUAL
打开多媒体文件,给 CMyplayerDlg::Onopen()函数添加相应代码,如下所示: void CMyplayerDlg::Onopen() {
// TODO: Add your control notification handler code here CFileDialog OpenDlg(TRUE);
CMyplayerDlg::OnRadio1() 播放 wav 音频 CMyplayerDlg::OnRadio2() 播放动画音频 CMyplayerDlg::OnRadio3() 播放 mid 音频 CMyplayerDlg::OnRadio4() 播放 CD 音乐 CMyplayerDlg::OnRadio5() 播放 mp3 音乐 首先对界面进行初始化,在程序运行初期,若没打开有效的音频文件,出打开 音乐按钮外,其他按钮均处于禁用状态,代码设计如下 BOOL CMyplayerDlg::OnInitDialog() {
///////////////////////////////////////////////////////////////////////////// // CAboutDlg dialog used for App About
class CAboutDlg : public CDialog { public:
switch(this->m_Mediatype) { case 1:OpenDlg.m_ofn.lpstrFilter="Wave Files(*.wav)\0*.wav\0\0";
this->m_multimedia.SetDeviceType("WaveAudio"); break; case 2:OpenDlg.m_ofn.lpstrFilter="AVI Files(*.avi)\0*.avi\0\0"; this->m_multimedia.SetDeviceType("AviAudio"); break; case 3:OpenDlg.m_ofn.lpstrFilter="Midi Files(*.mid)\0*.mid\0\0"; this->m_multimedia.SetDeviceType("Sequencer"); break; case 4:OpenDlg.m_ofn.lpstrFilter=" "; this->m_multimedia.SetDeviceType("CDAudio"); this->m_multimedia.SetCommand("Open"); this->m_pause.EnableWindow(TRUE); this->m_play.EnableWindow(TRUE); this->m_next.EnableWindow(TRUE); this->m_circle.EnableWindow(TRUE); this->m_close.EnableWindow(TRUE); } if(OpenDlg.DoModal()==IDOK) { this->m_multimedia.SetFileName(OpenDlg.GetFileName()); m_edit.SetWindowText(this->m_multimedia.GetFileName()); this->m_multimedia.SetCommand("Open"); this->m_pause.EnableWindow(TRUE); this->m_play.EnableWindow(TRUE); this->m_next.EnableWindow(TRUE); this->m_circle.EnableWindow(TRUE); this->m_close.EnableWindow(TRUE); } } 这样,程序便可以打开一个选择音频的对话框,选择音乐,如下图所示
对话框”,如图一所示。下面的步骤选取默认值。最后在步骤六单击“完成”按钮, 之后单击“确定”,完成,打开工作空间。
图一:
3.界面设计 在出现的工作界面单击鼠标右键,在弹出的菜单选择其中的 Insert ActiveX
Control 选项,在弹出的对话框选择 Microsoft Multimedia Control 选项,添加一个 MMControl 控件,再依次在对话框窗口上放置六个 Button 控件,两个 Slider 控件, 一个编辑框控件,五个 Radio Button 控件,一个静态控件,添加控件后的窗口体 如图二所示。 图二:
目录
一Hale Waihona Puke 设计目标 二.系统设计 三.系统实现过程
1.程序构成 2.创建项目 3.界面设计 4.程序设计 5.本系统的源代码
四.实验小结
多媒体播放器系统实现
一.设计目标
制作一个具有自己设计风格的简单的媒体播放器。 要求能随机选取要播放的文件,实现前进,回退,暂停,循环播放,音量大小调节 等基本功能。 能播放多种格式的音频视频格式文件,它的功能是能够选择一个有效的以.wav 为后 缀的音乐文件,有效的以.mp3 为后缀的音乐文件,有效的以.mid 为后缀的音乐文件, 有效的以.avi 为后缀的音乐文件,以及 CD 文件,在音乐播放的同时,有一个滑块来显 示播放的进度。 实现其它附加功能如关闭文件,播放下一首曲目等。 界面良好,功能完善
二.系统设计
媒体播放器是一个对话框窗口,主要由四部分构成,概括如下: 1. 打开文件:打开要播放的音频文件并进行选择。 2. 播放、循环播放:对音频文件进行播放或循环播放。 3. 音量调节。 4. 关闭文件。
三.系统实现过程
1.程序构成 媒体播放器主要由以下几个类构成: CMyplayerApp:多媒体播放器主程序。 CMyplayerDlg:用于展现系统运行时的状态。 CAboutDlg 2.创建项目 打开 Visual C++6.0 的集成开发环境,执行“文件”�“新建”菜单项,从弹出的 新建对话框。单击项目选项卡,在工程类型的列表中选择 MFC AppWizard exe 项, 在 Project name 编辑框中输入工程名称 myplyer,在 Location 编辑框中输入保存该 工程文件的路径。单击 OK 按钮弹出 MFC AppWizard-Step 1 对话框,选择“基本
给各个按钮添加相应的函数,各个函数的功能如下: CMyplayerDlg::Onopen():打开音乐文件,并选择要播放的音乐 CMyplayerDlg::Onplay() 播放选中的音乐 CMyplayerDlg::Onpause() 暂停音乐 CMyplayerDlg::Onclose() 关闭音乐 CMyplayerDlg::Onnext() 选择下一首音乐 CMyplayerDlg::Oncircle() 实现循环播放音乐
编写 CMyplayerDlg::Onplay()的代码, 播放选中的音乐, void CMyplayerDlg::Onplay() {
// TODO: Add your control notification handler code here this->m_multimedia.SetCommand("Play"); } 运行程序,便可对选中的音乐进行播放。 编写 CMyplayerDlg::Onpause()的代码, 暂停播放音乐 void CMyplayerDlg::Onpause() { // TODO: Add your control notification handler code here this->m_multimedia.SetCommand("Pause"); } 编写 CMyplayerDlg::Onclose()的代码, 关闭音乐 void CMyplayerDlg::Onclose() { // TODO: Add your control notification handler code here this->m_multimedia.SetCommand("Close"); this->m_pause.EnableWindow(FALSE); this->m_play.EnableWindow(FALSE); this->m_next.EnableWindow(FALSE); this->m_circle.EnableWindow(FALSE); this->m_close.EnableWindow(FALSE); } 编写 CMyplayerDlg::Onnext()的代码,实现选择下一首音乐 void CMyplayerDlg::Onnext() { // TODO: Add your control notification handler code here this->m_multimedia.SetCommand("Next"); Onopen(); this->m_multimedia.SetCommand("Play"); } 编写 CMyplayerDlg::Oncircle() 的代码,实现循环播放音乐 void CMyplayerDlg::Oncircle() { // TODO: Add your control notification handler code here int i; for(i=0;i<50;i++) { this->m_multimedia.SetCommand("Prev"); this->m_multimedia.SetCommand("Play");} } 最后,程序运行结果的界面如下: