mp3 仿真程序设计 可视化程序课程设计.doc
文本预览下载声明
课程设计报告文档
题目: MP3仿真程序设计
一.引言
1.编写目的:
2.定义:无
3.参考资料:VisualC++面向对象与可视化程序设计 作者:黄维通(第二版)
二.任务的描述
1.目标:通过课程设计使学生基本概念原理和技术将理论与实际相结合完成一个小型的设计与实现并在此基础上强化学生的实践意识提高其实际动手能力和创新能力CMp3PlayerApp::CMp3PlayerApp:构造函数
CMp3PlayerApp::GetMessageMap:消息循环函数
CMp3PlayerApp::InitInstance:初始化
(2)CMP3PlayerDlg:对话框类,建立对话框实例,接受各种消息并应用消息处理函数进行处理对应消息
CMp3PlayerDlg::OnExit 退出
CMp3PlayerDlg::OnInitDialog初始化对话框实例
CMp3PlayerDlg::OnOpen 打开
CMp3PlayerDlg::OnPaint 程序的尺寸设置
CMp3PlayerDlg::OnPause 暂停
CMp3PlayerDlg::OnPlay播放
CMp3PlayerDlg::OnStop停止
CStatic m_Status;静态控件变量
CButton m_Play;播放控件变量
CButton m_Pause;暂停变量
CString m_Path;路径变量
CButton m_Stop;停止播放变量
HWND m_sound_song;
BOOL Pause;
流程图
2.类的接口设计:
(1)CMP3PlayerApp类:
BOOL CMp3PlayerApp::InitInstance()
(2)CMP3PlayerDlg类:
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnExit();
afx_msg void OnStop();
afx_msg void OnPause();
afx_msg void OnPlay();
afx_msg void OnOpen();
3.类之间的关系:
四.编写代码
1.问题1
(1)问题描述:在编写打开按钮的函数时用到了CFileDialog mp3 创建通用对话框,前四个参数都没出错,但编写到第五个参数需要写过滤器时,在系统编译时提示第五参数无法转换格式,并且相同的代码在不同的项目中运行的不一样
(2)解决办法:利用网上资料所给的_T(X)形式书写过滤器代码时,编译有效。
2.问题2
(1)问题描述: m_sound_song 在定义这个变量时犹豫是把它定义成私有的,还是定义为公有的,抽搐很久。
(2)解决办法:首先想到m_sound_song变量是打开的音乐文件的句柄,把它作为公有也可以,对程序没有什么影响,但是,作为句柄如果是公有,那么对于别人来说可以改变这个句柄,考虑到程序的安全性,还是定义为私有,私有的话,只有类和类的对象可以访问,变得相对安全。
五.程序运行
1.程序运行的过程:
程序刚打开
程序加载音乐文件并开始播放,播放状态变为正在播放
点击暂停按钮后,播放状态发生变化,变为暂停,暂停按钮自动变为恢复
点击恢复后,音乐继续播放,按钮再一次变为暂停,播放状态变为播放
2.类的构造顺序:
先用CMP3PlayerApp类创建程序实例,再用CMP3PlayerDlg类创建对话框实例并将句柄交给程序,CMP3PlayerDlg类中加载各个空间的对象实例,并用
BEGIN_MESSAGE_MAP(CMp3PlayerDlg, CDialog)函数进行消息循环等待用户执行命令处理。
3.错误描述及其解决办法
(1)问题1:
问题描述: 编译过程中播放的状态总是不能正确显示,播放时能正常显示,当按暂停后,显示的内容就出了问题,不显示“暂停”恢复时:状态显示的却是“暂停”
解决办法: 查找OnPause()函数中发现,
m_Pause.SetWindowText(暂停);
MCIWndResume(m_sound_song);
Pause = FALSE;
m_Status.SetWindowText(_T(播放状态:播放));
其中m_Pause.SetWindowText(暂停)函数的内容写错,暂停后,状态问暂停,恢复后,状态为播放。
(2)问题2
问题描述: 打开音乐函数中有if(mp3.DoModal() == IDOK),刚开始时用的是mp3.DoModal()语句,本来没有太大的影响,但是打开后的
显示全部