基于VC 的 MP3播放器.docx
- 文档编号:3410237
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:10
- 大小:44.76KB
基于VC 的 MP3播放器.docx
《基于VC 的 MP3播放器.docx》由会员分享,可在线阅读,更多相关《基于VC 的 MP3播放器.docx(10页珍藏版)》请在冰豆网上搜索。
基于VC的MP3播放器
参考文献
[1]王育坚.VisualC++面向对象编程教程.第2版.北京:
清华大学出版社,2008
[2]侯俊杰.深入浅出MFC.第2版.广东:
南方出版社,2007
[3]严华峰等.VisualC++课程设计案例精编.北京:
中国水利水电出版社,2004
[4]王维玉等.VisualC++高级编程技术精粹.北京:
科学出版社,2008
MP3播放其设计思路
2.1实现功能
MP3播放器主要对常用Windows音频格式的文件实现播放控制:
播放歌曲、暂停播放、停止播放等;实现音量控制:
静音、声音放大以及声音减小的功能[3]。
2.2功能模块图
图2-1系统功能模块图
3详细设计
3.1界面布局设计
(1)创建一个对话框类,类名为Mp3PlayerDlg。
(2)向对话框中添加GroupBox控件、StaticText控件以及按钮控件。
(3)设置所添加的控件的属性。
系统界面的运行结果图如图3-1所示。
图3-1系统界面运行结果图
Mp3Player对话框中所用控件的属性描述如表3-1所示。
表3-1对话框控件ID及其描述
控件ID
描述
IDC_STATIC_INFO_WND
GroupBox控件,用来显示“信息窗口”
IDC_STATIC_INFO
StaticText控件,用来显示各种信息
IDC_STATIC_OPERATION
GroupBox控件,用来显示“操作面板”
IDC_BUTTON_OPEN
按钮控件,单击它用来选择歌曲
IDC_BUTTON_PLAY
按钮控件,单击它用来播放歌曲
IDC_BUTTON_PAUSE
按钮控件,单击它用来暂停播放歌曲
IDC_BUTTON_STOP
按钮控件,单击它用来停止播放歌曲
IDC_BUTTON_VOLUME
按钮控件,单击它用来设定音量
IDC_BUTTON_QUIT
按钮控件,单击它用来退出程序
3.2各模块功能设计
3.2.1处理“打开”按钮
单击“打开”按钮后,在OnButtonOpen()函数中,首先对文件类型进行过滤,调用DoModa()函数打开对话框选择一个媒体文件,通过GetPathName()函数获取文件路径,通过GetFileName()函数获取文件名后,调用DisplayInfo()函数在StaticText控件上显示“你选择的歌曲是(文件名)”,然后利用GetDlgItem()函数设置“暂停”按钮以及“停止”按钮不可用。
3.2.2处理“播放”按钮
单击“播放”按钮后,在OnButtonPlay()函数中,通过调用MCIMP3类的MCIOpen()函数获取刚才选择的文件路径以及文件名,调用该类的MCIPlay()函数播放歌曲,此时调用DisplayInfo()函数在StaticText控件上显示“正在播放的歌曲是(文件名)”,进行歌曲的播放,然后利用GetDlgItem()函数设置“播放”按钮不可用。
3.2.3处理“暂停”按钮
单击“暂停”按钮后,在OnButtonPause()函数中,首先通过调用MCIMP3类的MCIPause()函数暂停正在播放的歌曲,然后调用DisplayInfo()函数在StaticText控件上显示“暂停播放歌曲(文件名)”,此时的歌曲处于暂停时的进度上,利用GetDlgItem()函数设置“播放”按钮可用。
3.2.4处理“停止”按钮
单击“停止”按钮后,在OnButtonStop()函数中,首先通过调用MCIMP3类的MCIPause()函数停止正在播放的歌曲,然后调用DisplayInfo()函数在StaticText控件上显示“停止播放歌曲(文件名)”,将停止正在播放歌曲,利用GetDlgItem()函数设置“暂停”按钮和“停止”按钮不可用。
3.2.5处理“音量”按钮
单击“音量”按钮后,在OnButtonVolume()函数中,首先调用WinExec()函数并且打开C:
/WINDOWS/System32/sndvol32.exe,弹出“主音量”对话框,在此对话框内可以对音量进行增大或减小以及静音的设置。
3.2.6处理“退出”按钮
单击“退出”按钮后,在OnButtonQuit()函数中,调用CDialog类的OnCancel()函数将退出对话框,结束程序的运行。
附录
BOOLCMp3PlayerDlg:
:
OnInitDialog()//初始化
{
CDialog:
:
OnInitDialog();
//Add"About..."menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
{
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);//Setbigicon
SetIcon(m_hIcon,FALSE);//Setsmallicon
//TODO:
Addextrainitializationhere
DisplayInfo(0,_T("欢迎使用Mp3Player!
"),_T(""));
GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE);
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
}
voidCMp3PlayerDlg:
:
OnButtonOpen()//打开
{
//TODO:
Addyourcontrolnotificationhandlercodehere
charszFileFilter[]="AllMusicFiles(*.*)|*.*||";
CFileDialogFileOpenDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY,szFileFilter/*,this*/);
if(FileOpenDlg.DoModal()==IDOK)
{
m_csPathName=FileOpenDlg.GetPathName();
m_csSongName=FileOpenDlg.GetFileName();
DisplayInfo(1,_T("你选择的歌曲是:
"),m_csSongName);
m_bIsOpened=TRUE;
m_bIsNoSelectFile=FALSE;
}
else
{
m_bIsNoSelectFile=TRUE;
}
if(m_bIsOpened&&m_mcimp3.MCIIsPlaying())
{
m_mcimp3.MCIClose();
m_mcimp3.MCIStop();
}
if(m_bIsOpened&&m_mcimp3.MCIIsPlaying()
&&m_bIsNoSelectFile)
{
m_mcimp3.MCIResume();
}
if(m_bIsOpened&&m_bIsPressPauseBtn)
{
m_bIsPauseOpen=TRUE;
}
BOOLbIsPlayBtnEnabled=GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();
if(!
bIsPlayBtnEnabled)
{
GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE);
}
}
voidCMp3PlayerDlg:
:
OnButtonPlay()//播放
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(m_bIsPauseOpen)
{
if(m_bIsNoSelectFile)
{
m_mcimp3.MCIResume();
DisplayInfo(1,_T("继续播放歌曲:
"),m_csSongName);
m_bIsPressPauseBtn=FALSE;
}
else
{
m_mcimp3.MCIOpen(m_csPathName);
m_mcimp3.MCIPlay();
DisplayInfo(1,_T("正在播放的歌曲是:
"),m_csSongName);
GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);
m_bIsNoSelectFile=TRUE;
}
}
elseif(m_bIsOpened&&m_bIsPressPauseBtn)
{
m_mcimp3.MCIPlay();
DisplayInfo(1,_T("继续播放歌曲:
"),m_csSongName);
m_bIsPressPauseBtn=FALSE;
GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);
}
else
{
if(m_bIsNoSelectFile)
{
DisplayInfo(0,_T("你还没有选择歌曲,点击播放没有意义!
"),_T(""));
return;
}
m_mcimp3.MCIOpen(m_csPathName);
m_mcimp3.MCIGetLength(&m_dwLen);
m_mcimp3.MCIPlay();
SetTimer(1,1000,NULL);
DisplayInfo(1,_T("正在播放的歌曲是:
"),m_csSongName);
m_bIsPressStopBtn=FALSE;
GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(FALSE);
}
BOOLbIsPauseBtnEnabled=GetDlgItem(IDC_BUTTON_PAUSE)->IsWindowEnabled();
if(!
bIsPauseBtnEnabled)
{
GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(TRUE);
}
BOOLbIsStopBtnEnabled=GetDlgItem(IDC_BUTTON_STOP)->IsWindowEnabled();
if(!
bIsStopBtnEnabled)
{
GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(TRUE);
}
}
voidCMp3PlayerDlg:
:
OnButtonPause()//暂停
{
//TODO:
Addyourcontrolnotificationhandlercodehere
BOOLbIsPlaying=m_mcimp3.MCIIsPlaying();
if(bIsPlaying)
{
m_mcimp3.MCIPause();
DisplayInfo(1,_T("暂停播放歌曲:
"),m_csSongName);
m_bIsPressPauseBtn=TRUE;
}
BOOLbIsPlayBtnEnabled=GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();
if(!
bIsPlayBtnEnabled)
{
GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE);
}
}
voidCMp3PlayerDlg:
:
OnButtonStop()//停止
{
//TODO:
Addyourcontrolnotificationhandlercodehere
if(m_mcimp3.MCIStop()==0)//停止播放
{
m_bIsPressStopBtn=TRUE;
m_bIsPressPauseBtn=FALSE;
GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE);
DisplayInfo(1,_T("停止播放歌曲:
"),m_csSongName);
m_mcimp3.MCIClose();
GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);
}
BOOLbIsPlayBtnEnabled=GetDlgItem(IDC_BUTTON_PLAY)->IsWindowEnabled();
if(!
bIsPlayBtnEnabled)
{
GetDlgItem(IDC_BUTTON_PLAY)->EnableWindow(TRUE);
}
}
voidCMp3PlayerDlg:
:
OnButtonQuit()//退出
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CDialog:
:
OnCancel();
}
voidCMp3PlayerDlg:
:
OnButtonVolume()//音量
{
//TODO:
Addyourcontrolnotificationhandlercodehere
WinExec("C:
\\WINDOWS\\System32\\sndvol32.exe",SW_NORMAL);
}
voidCMp3PlayerDlg:
:
DisplayInfo(boolbOPInfo,CStringcsInfo,CStringcsSongName)
{
if(!
bOPInfo)
{
m_csInfo=csInfo;
}
else
{
m_csInfo=csInfo;
m_csInfo+=csSongName;
}
GetDlgItem(IDC_STATIC_INFO)->SetWindowText(m_csInfo);
}
voidCMp3PlayerDlg:
:
OnTimer(UINTnIDEvent)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
if(nIDEvent==1)
{
if(0==m_dwLen)
{
KillTimer
(1);
DisplayInfo(1,_T("已经播放完歌曲:
"),m_csSongName);
GetDlgItem(IDC_BUTTON_PAUSE)->EnableWindow(FALSE);
GetDlgItem(IDC_BUTTON_STOP)->EnableWindow(FALSE);
return;
}
m_dwLen--;
}
CDialog:
:
OnTimer(nIDEvent);
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于VC MP3播放器 基于 VC MP3 播放
![提示](https://static.bdocx.com/images/bang_tan.gif)