




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、*大学VC+程序设计报告项目名称:基于MFC的多媒体音频播放器设计学 院:信息科学技术学院制 作 人:指导教师:2011年12月22日基于MFC的多媒体音频播放器设计摘要虽然这学期是第一次接触VC,但因为以前有过对C语言的学习,在以前的基础上,在老师教导下,通过这一个学期的知识积累和上机实验,我对基本的控件,图形图像,窗口和对话框都有了较为系统的了解。而这次课设任务中选做的实验,体现了以前所学知识的运用,是真正地把控件,图形图像,窗口和对话框等知识点结合起来的日常应用程序MP3播放器。 当然通过这次课设,我对本学期所学的知识再次得到充分巩固,知识在实际运用中得以充分地转化一种基本动手能力,让我
2、能够更进一步地学习VisualC+6.0的知识,结果是我可以理解一些常见的大型程序以及自己动手创作出相应而基本的程序,而课设实验的成功完成无疑为今后学习VC+编程培养了浓厚的兴趣,也为今后要从事的编程工作奠定了坚实的基础。关键词: VC+6.0、MFC、播放器、MP3、WMAMFC-based Design Of Multimedia Audio PlayerABSTRACTAlthough this semester is the first contact with the VC, but because in the past have had to learn the C langua
3、ge, in the past, based on the teacher teaches, through which a term accumulation of knowledge and hands-on experiments, I have the basic controls, graphics images, windows and dialog boxes have a more systematic understanding. The task of selecting the class set up to do the experiment, reflecting t
4、he use of previous knowledge, is really the controls, graphics, windows and dialog boxes combining the knowledge of the daily point of application - MP3 player. Course set by the class, I learned this semester once again be fully consolidated in the practical application of knowledge to be fully tra
5、nsformed into a basic ability, so I can learn VisualC + +6.0 to further the knowledge, the result is I can understand some of the common large-scale program and yourself to create the appropriate and essential procedures, and course set up the experiment successful completion of doubt for future lea
6、rning VC + + programming to develop a strong interest, but also for the future to engage in the programming work has laid a solid basis. Keywords: VC + +6.0, MFC, player, MP3, WMA1.1 MFC简介- 5 -1.2 MCI简介- 5 -2 总体设计- 6 -2.1 实现功能- 6 -3、详细设计- 6 -3.1 界面布局设计- 6 -3.2 各模块功能设计- 7 -3.2.1 处理“播放”按钮- 7 -3.2.3 处理
7、“暂停”按钮- 8 -3.2.4 处理“停止”按钮- 8 -3.2.5 对话框初始化- 8 -3.2.6关联文件夹- 9 -3.2.7关联文件- 12 -4、总结- 12 -参考文献- 13 -1.1 MFC简介MFC是Visual C+是核心。MFC类库将所有图形用户界面的元素如窗口、菜单和按钮等都以类的形式进行了封装,MFC AppWizard向导根据继承性利用MFC派生出自己的类,并对Windows应用程序进行了分解,利用MFC派生类对应用程序重新进行组装,同时还规定了应用程序中各个MFC派生类对象之间的相互联系,实现了标准Windows应用程序的功能,这就是向导生成的所谓MFC应用程序
8、框架。每个MFC类都包括了一些函数,函数放到类中,符合C+编程方法。这些函数,必须通过类定义对象才能使用1。1.2 MCI简介MCI(Media Control Interface)媒体控制接口是MircroSoft提供的一组多媒体设备和文件的标准接口,它的好处是可以方便地控制绝大多数多媒体设备包括音频、视频、影碟、录像等多媒体设备,而不需要知道它们的内部工作状况。它所支持的媒体格式包括avi、wav、mpeg等等2。音频技术发展较早,几年前一些技术已经成熟并产品化,音频技术主要包括四个方面:音频数字化、语音处理、语音合成及语音识别。音频文件包括多种格式的文件,MP3就是其中的一种。MP3的全
9、称是Moving Picture Experts Group,Audio Layer ,它所使用的技术是在VCD(MPEG-1)的音频压缩技术上发展出的第三代,而不是MPEG-3。MP3是一种音频压缩的国际技术标准,它一般需要MP3播放器来读取。2 总体设计2.1 实现功能MP3播放器主要对常用Windows音频格式的文件实现播放控制:播放、暂停、停止、打开目录、打开文件等操作。 整体布局如下: MP3播放器打开文件播放歌曲暂停播放停止播放打开目录3、详细设计3.1 界面布局设计(1) 创建一个对话框类,类名为media player。(2) 向对话框中添加Group Box控件、Static
10、 Text控件以及按钮控件。(3) 设置所添加的控件的属性。系统界面的运行结果图如图3-1所示。图3-1 系统界面运行结果图Media Player对话框中所用控件的属性描述如表3-1所示。表3-1 对话框控件ID及其描述控件ID描述IDC_BUTTON_tianjiawenjian按钮控件,添加文件IDC_BUTTON_jianjiawenjianjia按钮控件,添加文件夹IDC_BUTTON_OK按钮控件,播放IDC_BUTTON_zanting按钮控件,单击它用来暂停歌曲IDC_BUTTON_tingzhi按钮控件,单击它用来停止歌曲IDC_BUTTON_guanyu关于,版权信息3.2
11、 各模块功能设计3.2.1 处理“播放”按钮:void CPlaymusicDlg:OnOK() TCHAR cmd_stopMAX_PATH;wsprintf(cmd_stop,"stop %s",shortpathfilename);/停止上一个mciSendString(cmd_stop,"",NULL,NULL);int index = m_Songs.GetSelectionMark();/获取标号if (index != -1)CString data = m_Songs.GetItemText(index,0); /歌曲路径shortpat
12、hfilename=data; /保存路径 TCHAR cmdMAX_PATH+10;wsprintf(cmd,"play %s",data);mciSendString(cmd,"",NULL,NULL);3.2.3 处理“暂停”按钮:void CPlaymusicDlg:OnBUTTONzanting()/暂停mciSendString("pause "+shortpathfilename,0,0,0);3.2.4 处理“停止”按钮void CPlaymusicDlg:OnBUTTONtingzhi()/停止mciSendStri
13、ng("stop "+shortpathfilename,0,0,0);3.2.5 对话框初始化BOOL CPlaymusicDlg:OnInitDialog()CDialog:OnInitDialog();/ Add "About." menu item to system menu./ IDM_ABOUTBOX must be in the system command range.ASSERT(IDM_ABOUTBOX & 0xFFF0) = IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CM
14、enu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL)CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);/ Set the icon for this dialog. The framework does this
15、 automatically/ when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);/ Set big iconSetIcon(m_hIcon, FALSE);/ Set small iconCAboutDlg dlg;dlg.DoModal();m_brush.CreateSolidBrush(RGB(200,100,200);/?颜色没有变化?/设置扩展风格m_Songs.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_
16、GRIDLINES |LVS_EX_TWOCLICKACTIVATE);m_Songs.InsertColumn(0,"歌曲名称",LVCFMT_LEFT,230);CFileFind fFind;CString str;GetModuleFileName(NULL,str.GetBuffer(0),MAX_PATH);int pos = str.ReverseFind('');CString temp = str;CString filename = temp.Left(pos);if (fFind.FindFile(filename+"/son
17、g.ini")CString song;UINT num = GetPrivateProfileInt("歌曲列表","数量",0,filename+"/song.ini");CString key;for (int i = 0; i < num; i+)key.Format("%d",i);GetPrivateProfileString("歌曲列表",key.GetBuffer(0),"",song.GetBuffer(0),100,filename+&qu
18、ot;/song.ini");m_Songs.InsertItem(i,song);return TRUE; / return TRUE unless you set the focus to a control3.2.6关联文件夹void CPlaymusicDlg:OnBUTTONtianjiawenjianjia()/关联文件夹/ TODO: Add your control notification handler code hereBROWSEINFO bi; char bufferMAX_PATH; ZeroMemory(buffer,MAX_PATH); bi.hwnd
19、Owner=GetSafeHwnd(); bi.pidlRoot=NULL;bi.pszDisplayName=buffer; bi.lpszTitle="选择一个文件夹" bi.ulFlags=BIF_EDITBOX; bi.lpfn=NULL; bi.lParam=0; bi.iImage=0; LPITEMIDLIST pList=NULL; if(pList=SHBrowseForFolder(&bi)!=NULL) m_Songs.DeleteAllItems();char pathMAX_PATH; ZeroMemory(path,MAX_PATH);
20、SHGetPathFromIDList(pList,path);CString strPath=path;CString strtemp,mp3="mp3",wma="wma"if(strPath.Right(1)!="")strtemp.Format("%s*.%s",strPath,mp3);elsestrtemp.Format("%s*.%s",strPath,mp3);CFileFind findfile;BOOL bfind=findfile.FindFile(strtemp);whi
21、le(bfind)bfind=findfile.FindNextFile();int i=m_Songs.GetItemCount();m_Songs.InsertItem(i,"");CString s = findfile.GetFilePath();#ifdef _DEBUGafxDump << "CString s" << s << "n"#endifLPTSTR fileName = s.GetBuffer( MAX_PATH );TCHAR shortNameMAX_PATH;/开辟sh
22、ortname【】内存空间GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR);/获取删掉空格的文件路径s.ReleaseBuffer( );#ifdef _DEBUGafxDump << "CString s " << s << "n"#endifm_Songs.SetItemText(i,0,(LPCSTR)CString(shortName) ); char pathMAX_PATH;ZeroMemory(path,MAX_PATH
23、);SHGetPathFromIDList(pList,path);CString strPath=path;CString strtemp,wma="wma"if(strPath.Right(1)!="")strtemp.Format("%s*.%s",strPath,wma);elsestrtemp.Format("%s*.%s",strPath,wma);CFileFind findfile;BOOL bfind=findfile.FindFile(strtemp);while(bfind)bfind=fin
24、dfile.FindNextFile();int i=m_Songs.GetItemCount();m_Songs.InsertItem(i,"");CString ss = findfile.GetFilePath();#ifdef _DEBUGafxDump << "CString ss" << ss << "n"#endifLPTSTR fileName1 = ss.GetBuffer( MAX_PATH );TCHAR shortName1MAX_PATH;/开辟shortname【】内存空
25、间GetShortPathName(fileName1,shortName1,sizeof(shortName1)/sizeof(TCHAR);/获取删掉空格的文件路径ss.ReleaseBuffer();#ifdef _DEBUGafxDump << "CString ss " << ss << "n"#endifm_Songs.SetItemText(i,0,(LPCSTR)CString(shortName1) );3.2.7关联文件void CPlaymusicDlg:OnBUTTONtianjiawenjian() / TODO: Add your control notification handler code hereCFileDialog fDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,"Audio Files(*.wma; *.mp3) | *.wma; *.mp3|",
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 铜冶炼过程中的环保设备研发进展预测分析研究考核试卷
- 金属加工中的金属加工设备维护管理信息系统考核试卷
- 矿石催化反应与催化机理考核试卷
- 银冶炼中的冶炼厂智能化改造与生产调度考核试卷
- 针织品生产计划与优化考核试卷
- 外科缝合穿针教学
- 口腔护士职业实践心得
- 麻醉科每月医疗质量控制
- 冷菜制作的卫生与安全
- 妊娠高血压疾病查房要点
- 铝粉加工合同协议书
- 大学语文试题及答案安徽
- 近七年宁夏中考化学真题及答案2024
- 2025至2030中国芳纶纤维行业需求预测及发展前景趋势研究报告
- 十一学校小升初入学测试数学真题及详细解答
- Braden 压力性损伤评分表详解
- 婚内赌博欠债协议书范本
- 造价咨询项目管理制度
- 徐圩港区疏港航道整治工程报告书
- XX公司事故隐患内部报告奖励制度1
- 儿童重症肺炎护理常规
评论
0/150
提交评论