ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:714.09KB ,
资源ID:6413425      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6413425.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(红色MP3播放器.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

红色MP3播放器.docx

1、红色MP3播放器西安理工大学高科学院计算机科学与技术题 目 简单音乐播放器 学 部 计算机科学与技术 班 级 09级计算机科学与技术 姓 名 刘洋 张丹 王韦康 惠翔翔 2012年9月至2012年11月1 题目要求要求用所学知识编写mp3播放器来实现mp3播放基本功能2 功能需求Mp3播放器基本的添加歌曲,播放,暂停,暂停恢复,停止,下一首,前一首,播放列表,最小化到托盘等3 总体设计3.1 系统模块3.2 系统业务处理流程 4 详细设计4.详细设计1. 新建对话框MFC应用程序2. 添加基类class MCIMP3在头文件中添加#include #pragma comment(lib,win

2、mm.lib)类成员public:MCIMP3(); virtual MCIMP3(); DWORD MCIOpen(const CString &strPath); DWORD MCIClose(); DWORD MCIPlay(); DWORD MCIPause(); DWORD MCIResume(); DWORD MCIStop(); DWORD MCISetMute(BOOL bMute); DWORD MCIGetLength(DWORD *dwReturn); DWORD MCIGetPos(DWORD *dwPos); DWORD MCISeekTo(DWORD dwTo);

3、DWORD MCISeekToStart(); DWORD MCISeekToEnd(); BOOL MCIIsPlaying(); BOOL MCIIsOpened();DWORD m_dwLength;protected: MCIDEVICEID m_wID;在类实现文件MCIMP3.cpp中添加如下代码/构造函数MCIMP3:MCIMP3() m_wID=NULL; m_dwLength=0;/析构函数MCIMP3:MCIMP3()MCIClose();/打开MCI设备 参数为文件地址DWORD MCIMP3:MCIOpen(const CString &strPath) MCI_OPE

4、N_PARMS mciOP; DWORD dwReturn; ASSERT(m_wID=NULL); mciOP.lpstrDeviceType=NULL; mciOP.lpstrElementName=strPath; dwReturn=mciSendCommand(NULL,MCI_OPEN,MCI_OPEN_ELEMENT|MCI_WAIT|MCI_OPEN_SHAREABLE, (DWORD)(LPVOID)&mciOP); if (dwReturn=0) m_wID=mciOP.wDeviceID; if(this-MCIGetLength(&m_dwLength)!=0) m_dw

5、Length=0; else m_wID=NULL; return dwReturn;/关闭MCI设备DWORD MCIMP3:MCIClose() MCI_GENERIC_PARMS mciGP; DWORD dwReturn; dwReturn=mciSendCommand(m_wID,MCI_CLOSE,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP); m_wID=NULL; return dwReturn;/播放DWORD MCIMP3:MCIPlay() MCI_PLAY_PARMS mciPP; return mciSendCommand(m

6、_wID,MCI_PLAY,MCI_NOTIFY, (DWORD)(LPVOID)&mciPP);/暂停DWORD MCIMP3:MCIPause() MCI_GENERIC_PARMS mciGP; return mciSendCommand(m_wID,MCI_PAUSE,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);/继续 (从暂停恢复)DWORD MCIMP3:MCIResume() MCI_GENERIC_PARMS mciGP; return mciSendCommand(m_wID,MCI_RESUME,MCI_NOTIFY|MCI_WA

7、IT, (DWORD)(LPVOID)&mciGP);/停止播放DWORD MCIMP3:MCIStop() MCI_GENERIC_PARMS mciGP; return mciSendCommand(m_wID,MCI_STOP,MCI_NOTIFY|MCI_WAIT, (DWORD)(LPVOID)&mciGP);/到dwTo处DWORD MCIMP3:MCISeekTo(DWORD dwTo) DWORD dwreturn; if (dwTo0& dwTo=m_dwLength) dwreturn=MCISeekToEnd(); else dwreturn=MCISeekToStart

8、(); return dwreturn;/到开始处DWORD MCIMP3:MCISeekToStart() MCI_SEEK_PARMS mciSP; return mciSendCommand(m_wID,MCI_SEEK, MCI_WAIT|MCI_NOTIFY|MCI_SEEK_TO_START,(DWORD)(LPVOID)&mciSP);/到结束处DWORD MCIMP3:MCISeekToEnd() MCI_SEEK_PARMS mciSP; return mciSendCommand(m_wID,MCI_SEEK,MCI_WAIT|MCI_NOTIFY|MCI_SEEK_TO_

9、END, (DWORD)(LPVOID)&mciSP);/得到播放文件长度DWORD MCIMP3:MCIGetLength(DWORD *dwLength) MCI_STATUS_PARMS mciSP; mciSP.dwItem=MCI_STATUS_LENGTH; DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP); if(dwReturn=0) *dwLength=mciSP.dwReturn/1000; return dwReturn;/得到当前播放文件播放到的地

10、方DWORD MCIMP3:MCIGetPos(DWORD *dwPos) MCI_STATUS_PARMS mciSP; mciSP.dwItem=MCI_STATUS_POSITION; DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP); if(dwReturn=0) *dwPos=mciSP.dwReturn/1000; return dwReturn;/静音DWORD MCIMP3:MCISetMute(BOOL bMute) MCI_SET_PARMS mciS

11、P; mciSP.dwAudio=MCI_SET_AUDIO_ALL; DWORD dwFlags; if(bMute) dwFlags=MCI_WAIT|MCI_SET_AUDIO|MCI_SET_OFF; else dwFlags=MCI_WAIT|MCI_SET_AUDIO|MCI_SET_ON; return mciSendCommand(m_wID,MCI_SET,dwFlags, (DWORD)(LPVOID)&mciSP);/判断是否播放BOOL MCIMP3:MCIIsPlaying() MCI_STATUS_PARMS mciSP; mciSP.dwItem=MCI_STAT

12、US_MODE; DWORD dwReturn=mciSendCommand(m_wID,MCI_STATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP); if(dwReturn=0) if(mciSP.dwReturn=MCI_MODE_PLAY) return true; return false;/判断是否打开BOOL MCIMP3:MCIIsOpened() MCI_STATUS_PARMS mciSP; mciSP.dwItem=MCI_STATUS_MODE; DWORD dwReturn=mciSendCommand(m_wID,MCI_ST

13、ATUS,MCI_STATUS_ITEM, (DWORD)(LPVOID)&mciSP); if(dwReturn=0) if(mciSP.dwReturn=MCI_MODE_OPEN| mciSP.dwReturn=MCI_MODE_PLAY| mciSP.dwReturn=MCI_MODE_PAUSE| mciSP.dwReturn=MCI_MODE_STOP| mciSP.dwReturn=MCI_MODE_SEEK) return true; return false;3. 按如图方式添加控件 对话框属性改为无边框,列表框属性也为无边框 编辑框改为只读无边框各按钮以及控件ID以及变量关

14、联如下表控件名控件类型ID变量类型变量关联正在播放静态文本示例编辑框编辑框ID_NAMECStringpath示例编辑框编辑框ID_TIMECStringm_time列表框IDC_LISTCListBoxm_list滑块IDC_SLIDER1CSliderCrtlm_ctrlSlider?按钮ID_ABOUT-按钮ID_MIN退出按钮ID_EXIT添加按钮ID_OPEN上一首按钮ID_PRE播放按钮ID_PLAY暂停按钮ID_PAUSE下一首按钮ID_NEXT继续按钮IDC_RESUME停止按钮ID_STOPList按钮ID_LISTBUTTDel按钮ID_DELLIST4在CPlayerDl

15、g.h中在CPlayDlg类内添加pubilc成员变量int flag; int j; int pause; void view(); CString str1; CString str; int file1; int play; int time; int nPos; int temp; int i; CString m_Path;MCIMP3 m_mp3player;5.引入背景位图并改ID为IDB_BEIJING和IDB_BEIJINGM 在OnPaint函数中else后屏蔽CDialog:OnPaint();在后面添加如下代码 if(flag=1) CPaintDC dc(this);

16、 CDC memdc; memdc.CreateCompatibleDC(&dc); CBitmap bkg; bkg.LoadBitmap(IDB_BEIJING); BITMAP bkginfo; bkg.GetBitmap(&bkginfo); memdc.SelectObject(&bkg); RECT rect; GetWindowRect(&rect); dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top, &memdc,0,0,bkginfo.bmWidth,bkginfo.bmHeight,SRCCOPY);

17、if(flag=0) CPaintDC dc(this); CDC memdc; memdc.CreateCompatibleDC(&dc); CBitmap bkg; bkg.LoadBitmap(IDB_BEIJINGM); BITMAP bkginfo; bkg.GetBitmap(&bkginfo); memdc.SelectObject(&bkg); RECT rect; GetWindowRect(&rect); dc.StretchBlt(0,0,rect.right-rect.left,rect.bottom-rect.top, &memdc,0,0,bkginfo.bmWid

18、th,bkginfo.bmHeight,SRCCOPY); 6.系统托盘实现 在CPlayerDlg类中添加函数toTray(bool show)void CPlayerDlg:toTray(bool show) / TODO: Add your control notification handler code here NOTIFYICONDATA pnid; pnid.cbSize=(DWORD)sizeof(NOTIFYICONDATA); pnid.hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME); strcpy(pnid.szTip,MP3播放 )

19、; pnid.hWnd=m_hWnd; pnid.uCallbackMessage=UM_SHOWWINDOW; pnid.uFlags=NIF_ICON|NIF_MESSAGE|NIF_TIP; pnid.uID=ID_TASKBARICON; pnid.uID=(UINT)m_hIcon; if(show) Shell_NotifyIcon(NIM_ADD,&pnid); ShowWindow(SW_HIDE); else Shell_NotifyIcon(NIM_DELETE,&pnid); ShowWindow(SW_SHOW); 在构造函数中添加ON_MESSAGE(UM_SHOWW

20、INDOW,OnNotifyIcon)到BEGIN_MESSAGE_MAP(CPlayerDlg, CDialog)和END_MESSAGE_MAP()之间添加函数void CPlayerDlg:OnNotifyIcon(WPARAM wParam, LPARAM lParam) switch(lParam) case WM_LBUTTONDBLCLK: toTray(false); break; 最后对 按钮- 添加消息响应函数void CPlayerDlg:OnMin() / TODO: Add your control notification handler code here toT

21、ray(true);7.实现点击对话框拖动 打开classwizard添加WM_LBUTTONDOWNvoid CPlayerDlg:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x, point.y); CDialog:OnLButtonDown(nFlags, point);8.初始化变量 在构造函数中添加m_time

22、= _T(); path = _T(); i=0;temp=0;nPos=0;play=0;file1=0;pause=0;j=0;flag=0;9.对?按钮添加消息响应函数void CPlayerDlg:OnAbout() CAboutDlg dlg; dlg.DoModal();10.对退出按钮添加消息响应函数void CPlayerDlg:OnExit() exit(0);11.对添加按钮添加消息响应函数void CPlayerDlg:OnOpen() CFileDialog file(TRUE,NULL,NULL,OFN_HIDEREADONLY,MP3 Files (*.mp3)|*

23、.mp3|AVI Files(*.avi)|*.avi|WAV Files(*.wav)|*.wav|WMA Files(*.wma)|*.wma);file.DoModal();m_Path=file.GetPathName();int nIndex=m_list.InsertString(-1,m_Path);m_list.SetCurSel(j); j+;file1=1;12.对播放按钮添加消息响应函数void CPlayerDlg:OnPlay() if(play=0&file1=1) m_ctrlSlider.SetRange(0,100); SetTimer(1,1000,NULL

24、); m_mp3player.MCIOpen(m_Path); m_mp3player.MCIPlay(); play=1; path=m_Path; UpdateData(FALSE); 13.对暂停按钮添加消息响应函数void CPlayerDlg:OnPause() if(play=1) KillTimer(1); m_mp3player.MCIPause(); pause=1; 14.对继续按钮添加消息响应函数void CPlayerDlg:OnResume() if(play=1&pause=1) SetTimer(1,1000,NULL); m_mp3player.MCIResum

25、e(); 15.对停止按钮添加消息响应函数void CPlayerDlg:OnStop() if(play=1) m_mp3player.MCIStop(); KillTimer(1); m_ctrlSlider.SetPos(0); / m_mp3player.MCISeekTo(0); m_mp3player.MCIClose(); play=0; file1=0; i=0; view(); UpdateData(FALSE);16.对上一首按钮添加消息响应函数void CPlayerDlg:OnPre() int n=m_list.GetCurSel(); if( play=1 & fi

26、le1=1 & n-1=0) CString p; KillTimer(1); m_list.GetText(n-1,p); m_Path=p; i=0; m_list.SetCurSel(n-1); OnStop(); file1 = 1; play = 1; m_mp3player.MCIOpen(m_Path); m_mp3player.MCIPlay(); path=m_Path; SetTimer(1,1000,NULL); if(play=1 & file1=1 & n-10) KillTimer(1); m_list.SetCurSel(j-1); CString p; m_list.GetText(j-1,p); m_Path=p; i=0; OnStop(); file1 = 1; play = 1; m_mp3player.MCIOpen(m_Path); m_mp3player.MCIPlay(); path=m_Path; SetTimer(1,1000,NULL); 17.对下一首添加消息响应函数void CPlayerDlg:OnNext() int n=m_list.GetCurSel(); if( play=1 & file1=1 & n+1=j) n=0; KillTimer(1); m_list.SetCurSel(n); CString

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1