您的当前位置:首页正文

VC++设计报告

来源:画鸵萌宠网


贵州师范大学

Visual C++程序设计课程大作业

题目名称: 基于MFC的音乐播放器 系 名 称: 数学与计算机科学学院 专业班级: 13级数字媒体技术班 姓 名: 潘胜婷 学 号: 130705010054

2015 年 6 月18

目 录

一、成员分工 .................................................... 1 二、需求分析 .................................................... 2 三、总体设计 .................................................... 3 四、详细设计 .................................................... 4 五、系统测试 ................................................... 11 六、总结 .................................................... .. 13 七、参考文献 ................................................... 14

一、 成员分工

组长:潘胜婷 组员:潘胜婷

组长潘胜婷:负责整个工程设计的选材和功能的添加以及代码的设计。 潘胜婷:负责对话框的设计、制作、控件的添加。 潘胜婷:负责工程的功能测试与修改。

1

二、需求分析

我们需要制作一个音乐播放器,具有一般播放*.mp3,*.wma,*.mdi,*.wav,*.avi,*.dat等文件,还有具有播放、暂停、重复播放、音量调节、Repeat功能等功能。需要解决的问题是向对话框中添加音乐播放的控件,以及各按键功能的实现。

2

三、总体设计

1、系统功能模块图(如图一):

基于MFC的音乐播放播放器开关 音乐播放 音量增减 增删音乐 开启 关闭 播放 暂停 终止 音量加 音量减 添加 删除

图一:系统功能模块图

2、流程图(如图二):

开始 添加音乐 暂停 播放 终止 播放结束 退出

图二:系统流程图

3

四、详细设计

播放 IDC_open; 添加 IDC_fileopen; 暂停 IDC_pause; 删除 IDC_del; 停止 IDC_stop; 退出 IDC_exit;

音乐名编辑框 IDC_filename; 音量控制滑块 IDC_SLIDER1; 音量控制编辑框 IDC_vol;

相应的添加变量:

CRoundButton m_list; CRoundButton m_slider; CRoundButton m_int; 详细步骤:

1、建立基于对话框(Dialog Based)的运用程序。 2、在上面添加按钮,ID和Caption分别为 播放 IDC_open; 添加 IDC_fileopen; 暂停 IDC_pause; 删除 IDC_del; 停止 IDC_stop; 退出 IDC_exit;

音乐名编辑框 IDC_filename; 音量控制滑块 IDC_SLIDER1; 音量控制编辑框 IDC_vol;

3、再打开Projects->Add to Project->Components and Controls->Registered ActiveX Controls对话框,选择其中的Active Movie Control Object, Insert,OK之后,你会发现你的控件面板上多了一项ActiveMovieControl Object,将它选中,直接放在你的对话框上就行了。按Ctrl+W打开ClassWizard为它添加变量CActiveMovie3 m_ActiveMovie。 4.为程序添加消息处理函数。打开 ClassWizard,为各个按钮加入消息处理函数。在MediaPlayerDlg.cpp文件里为各消息处理函数添加代码。

4

(1)首先,在MediaPlayerDlg.h中添加如下:

public:

BOOL flag;

CMediaPlayerDlg(CWnd* pParent = NULL); // standard constructor

(2)添加音乐按钮:

void CPanshengtingDlg::Onfileopen() {

// TODO: Add your control notification handler code here char filefiler[]=\"mp3文件(*.mp3)|*.mp3|\"

\"wma文件(*.wma)|*.wma|\"

\"wav文件(*.wav)|*.wav|\"; CFileDialog

dlg(true,NULL,NULL,OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT|OFN_ENABLESIZING,filefiler);

if (dlg.DoModal()==IDOK) {

CString strfilepath=dlg.GetPathName(); CString strfilename=dlg.GetFileName(); SetDlgItemText(IDC_filename,strfilename); CString mtime; CClientDC dc(this); hour=0;minute=0;second=0;

dc.SetBkColor(RGB(124,252,0));//设置放置计数器区域的外观

5

dc.SetTextColor(RGB(255,255,203));//设置数字显示的颜色

mtime.Format(\"%02d:%02d:%02d\显示时间进度

dc.TextOut(280,100,mtime);

panshengting panshengting; panshengting.Load(this->m_hWnd,strfilepath); GetDlgItem(IDC_open)->EnableWindow(TRUE); GetDlgItem(IDC_pause)->EnableWindow(TRUE); GetDlgItem(IDC_stop)->EnableWindow(TRUE);

GetDlgItem(IDC_del)->EnableWindow(TRUE);

m_list.InsertString(m_list.GetCount(),strfilename);//获取文件名 m_list.SetCurSel(m_list.GetCount()-1);

} }

(3)播放音乐按钮:

void CPanshengtingDlg::Onopen() { // TODO: Add your control notification handler code here CString strfilename;

int index=m_list.GetCurSel(); CString mtime;

CClientDC dc(this); 6

if(commp!=NULL) { commp->Stop(); delete(commp);

}

commp=new panshengting; hour=0;minute=0;second=0;

dc.SetBkColor(RGB(124,252,0));//设置放置计数器区域的外观 dc.SetTextColor(RGB(255,255,203));//设置数字显示的颜色

mtime.Format(\"%02d:%02d:%02d\显示时间进度dc.TextOut(280,100,mtime); if(index==-1) { MessageBox(\"请添加音乐\"); return; }

m_list.GetText(index,strfilename); SetDlgItemText(IDC_filename,strfilename);

commp->Load(this->m_hWnd,strfilename); commp->Play();

7

commp->Stop();

SetTimer(0,1000,NULL);

GetDlgItem(IDC_open)->EnableWindow(TRUE); GetDlgItem(IDC_pause)->EnableWindow(TRUE); GetDlgItem(IDC_stop)->EnableWindow(TRUE); GetDlgItem(IDC_del)->EnableWindow(TRUE);

}

(4)停止播放按钮:

void CPanshengtingDlg::Onstop() { // TODO: Add your control notification handler code here if(commp!=NULL) { commp->Stop(); delete(commp); //commp3=NULL;

}

commp=new(panshengting);

SetDlgItemText(IDC_pause,\"暂停\"); KillTimer(0);//取消计数器的显示 CString mtime; CClientDC dc(this); hour=0;minute=0;second=0;

dc.SetBkColor(RGB(124,252,0));//设置放置计数器区域的外观8

dc.SetTextColor(RGB(255,255,203));//设置数字显示的颜色

mtime.Format(\"%02d:%02d:%02d\显示时间进度 dc.TextOut(280,100,mtime);

//GetDlgItem(IDC_open)->EnableWindow(FALSE); GetDlgItem(IDC_pause)->EnableWindow(FALSE);

GetDlgItem(IDC_stop)->EnableWindow(FALSE);

//GetDlgItem(IDC_del)->EnableWindow(FALSE); }

(5)暂停播放按钮:

void CPanshengtingDlg::Onpause() { // TODO: Add your control notification handler code here CString strtemp; if(commp==NULL) { return;

}

GetDlgItemText(IDC_pause,strtemp);//获取按钮状态 if (strtemp.Compare(\"暂停\")==0) { commp->Pause();

SetDlgItemText(IDC_pause,\"继续\"); KillTimer(0);//取消计数器的显示 }

if (strtemp.Compare(\"继续\")==0) {

commp->resum();

9

}

(6)音量调节按钮:

DWORD panshengting::Setvolumn(DWORD vol) {

MCI_DGV_SETAUDIO_PARMS mcisetvolumn; mcisetvolumn.dwCallback=NULL;

mcisetvolumn.dwItem=MCI_DGV_SETAUDIO_VOLUME; mcisetvolumn.dwValue=vol;

mciSendCommand(DeviceID,MCI_SETAUDIO,MCI_DGV_SETAUDIO_VALUE|MCI_DGV_SETAUDI }

SetTimer(0,1000,NULL);

SetDlgItemText(IDC_pause,\"暂停\");

O_ITEM,(DWORD)(LPVOID)&mcisetvolumn); }

return 0;

五、系统测试

10

1、打开初始程序(如图三):

图三;程序初始界面

2、点击“打开”,添加播放资源(如图四)。

图四;音乐库

11

3、单击“播放”,开始播放。点击“暂停”,暂停播放。再次点击“暂停”按钮,继续播放(如图五)。

图五;播放

4、单击“终止”,音乐播放停止,之后单击“播放”,重头开始播放。 5、单击“最小化”。播放器消失,再次点击出现。(如图六)

图六;隐藏进度条

12

六、总结

本次实验设计在本组成员团结合作下,终于完成了。仔细回想起实验设计,发现在软件设计的功能上,我们做的虽没有特别新的功能,但做出的功能都比较实用,做出了一个音乐播放器所必备的元素,在这一点上还是比较成功的。我们设计的播放器小巧,比较节省空间。当然,这个播放器也有许多的不足之处,如播放器的功能太少,太过于简单,播放器的画面太单调,很空洞,当然,这些地方都需要改进,虽然本次试验设计做的不是很完美,但我们从中获得了很多经验,起码下次再做类似的的设计时更能节省时间且能做的更好更快。从本次实验设计中,我们学到了很多东西,如在计算机编程设计中,团队合作是十分重要的:要经常的编写一些程序,这样编写程序时才能很灵活。

13

七、参考文献

郑阿奇 丁有和 编著 visual C++教程(第2版).机械工业出版社.2008年8月. 候俊杰 编著 深入浅出MFC(第二版).华中科技大学出版社.2001年1月. David J. Kruglinski Visual C++技术内幕(第四版).清华大学出版社. 1999年1月.

孙鑫 余安萍 编著 vc++深入详解.电子工业出版社.2006年6月.

14

因篇幅问题不能全部显示,请点此查看更多更全内容

Top