自己动手开发音乐播放器《五》播放功能的实现_第1页
自己动手开发音乐播放器《五》播放功能的实现_第2页
自己动手开发音乐播放器《五》播放功能的实现_第3页
自己动手开发音乐播放器《五》播放功能的实现_第4页
自己动手开发音乐播放器《五》播放功能的实现_第5页
已阅读5页,还剩4页未读, 继续免费阅读

下载本文档

kok电子竞技权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

kok电子竞技:文档简介

...v.自己动手开发音乐播放器?五?播放功能的实现

小伙伴们注意了,我在上一篇博客介绍了文件操作,在这篇博客中将承受音乐播放器的核心功能,播放、暂停、停顿、继续、上一曲、下一曲等功能,在这些功能中会用到一个非常重要的函数mmciSendString,mciSendString函数是一个处理多媒体文件的函数,其中音乐播放器中的播放、暂停、停顿、等功能都需要用到这个函数,居然这个函数这么重要,我们就来看看这个函数的用法,

函数原型:

MCIERRORmciSendString(

LPCTSTRlpszmand,命令字符串

LPTSTRlpszReturnString,返回的字符串

UINTcchReturn,返回字符串的大小

HANDLEhwndCallback回调句柄(一般为NULL)

);

其中的第一个参数的格式:

播放命令+音乐文件

如:mciSendString("playD:\\1.mp3",NULL,0,NULL);

中play表示播放命令D:\\1.mp3表示音乐文件

在写代码前先定义一些全局变量和函数

全局变量

/**************************************************************************

播放歌曲所需的全局变量

****************************************************************************/

staticintnumPlayMusiow=0;//正在播放的歌曲的序号

PlayMusic函数用于播放音乐

/****************************************************************************

函数名:voidPlayMusic(HWNDhwnd)

函数功能:播放歌曲

****************************************************************************/

voidPlayMusic(HWNDhwnd)

{

TCHARcmd[MAX_PATH];//保存播放歌曲的命令

//打印关闭歌曲的命令

wsprintf(cmd,"close%s",OpenMusicFile);

///发送关闭歌曲的命令

mciSendString(cmd,"",0,NULL);

GetMusic(hwnd);//得到选择的歌曲

//显示正在播放的歌曲

SetDlgItemText(hwnd,IDC_PLAYEDIT,line);

wsprintf(cmd,"open%salias",OpenMusicFile);

mciSendString(cmd,0,0,NULL);

//打印播放歌曲的命令

wsprintf(cmd,"play%s",OpenMusicFile);

//发送播放歌曲的命令

mciSendString(cmd,0,0,NULL);

}

然后在voidMain_Onmand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)中添加下面的代码

//播放歌曲

caseIDC_PLAY:

{

PlayMusic(hwnd);

}

break;

运行结果(播放成龙的少年强)

暂停的实现代码暂:筒シ爬似也是定义一些全局变量和函数

首先定义一个全局变量

/***********************************************************************************************

实现暂停播放所需的全局变量

*************************************************************************************************/

staticintflagPauseOrPlay=0;//暂停播放的标志位(歌曲是暂停还是播放)

然后定义一个函数PauseMusic实现暂停播放

/**********************************************************************************************

函数名:voidPauseMusic(HWNDhwnd)

函数功能:暂停歌曲

***********************************************************************************************/

voidPauseMusic(HWNDhwnd)

{

//得到暂停按钮上的句柄

HWNDhwndPause=GetDlgItem(hwnd,IDC_PAUSE);

TCHARcmd[256];

//当按下了继续按钮

if(1==flagPauseOrPlay)

{

//继续按钮变成暂停按钮

SetWindowText(hwndPause,TEXT("暂停"));

//打印播放命令

wsprintf(cmd,"play%s",OpenMusicFile);

//发送播放命令

mciSendString(cmd,NULL,0,0);

//修改标志位(表示用户按下了继续按钮)

flagPauseOrPlay=0;

}

elseif(0==flagPauseOrPlay)//当按了暂:

{

//暂停按钮变成继续按钮

SetWindowText(hwndPause,TEXT("继续"));

//打印暂停命令

wsprintf(cmd,"pause%s",OpenMusicFile);

//执行暂停命令

mciSendString(cmd,NULL,0,0);

//修改标志位(表示用户按下了暂停按钮)

flagPauseOrPlay=1;

}

}

最后在voidMain_Onmand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)中添加下面的代码

//暂停

caseIDC_PAUSE:

{

PauseMusic(hwnd);

}

break;

实现效果

停顿播放的实现

/***********************************************************************************************

函数名:voidStopMusic(HWNDhwnd)

函数功能:停顿播放

************************************************************************************************/

voidStopMusic(HWNDhwnd)

{

TCHARcmd[256];

wsprintf(cmd,"stop%s",OpenMusicFile);

mciSendString(cmd,NULL,0,0);

}

在voidMain_Onmand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)中添加下面的代码

//停顿

caseIDC_STOP:

{

StopMusic(hwnd);

}

break;

上一曲或下一曲的实现

全局变量

/****************************************************************************************************************

实现上一曲和下一曲所需的全局变量

*****************************************************************************************************************/

staticinttotalMusicCount;//播放列表中歌曲的总数

staticNumPlayMusiow;//选择歌曲的编号

staticintiLoopType=0;//播放方式:初始为单曲模式

函数

/***********************************************************************************************

函数名:voidJumpMusic(HWNDhwnd,intnum)

函数功能:实现上一曲(num=0)或下一曲(num=1)

************************************************************************************************/

voidJumpMusic(HWNDhwnd,intnum)

{

HWNDhwndList=GetDlgItem(hwnd,IDC_LIST1);

//得到选择的歌曲的序号

numPlayMusiow=ListBox_GetCurSel(hwndList);

//得到歌曲总数

totalMusicCount=ListBox_GetCount(hwndList);

/*下面的代码是处理随机播放中的上一曲和下一曲*/

if(0==num)//上一曲

{

//随机播放

if(3==iLoopType)

{

//随机生成歌曲的序号

numPlayMusiow=rand()%totalMusicCount;

}

else

{

//当正在播放的歌曲的序号大于0时

if(numPlayMusiow>0)

{

//上一曲

numPlayMusiow=numPlayMusiow-1;

}

elseif(0==numPlayMusiow)//当在播放第1首歌时

{

//跳到最后一首歌曲

numPlayMusiow=totalMusicCount-1;

}

}

}

elseif(1==num)//下一曲

{

if(3==iLoopType)

{

//随机生成歌曲的序号

numPlayMusiow=rand()%totalMusicCount;

}

else

{

//当正在播放的歌曲的序号小于歌曲的最大序号时

if(numPlayMusiow<totalMusicCount-1)

{

//下一曲

numPlayMusiow=numPlayMusiow+1;

}

//当正在播放最后一首歌时

elseif(numPlayMusiow==totalMusicCount-1)

{

//跳到第一首歌

numPlayMusiow=0;

}

}

}

//设置歌曲的序号

ListBox_SetCurSel(hwndList,numPlayMusiow);

//得到歌曲的序号

numPlayMusiow=ListBox_GetCurSel(hwndList);

//播放歌曲

PlayMusic(hwnd);

}

在voidMain_Onmand(HWNDhwnd,intid,HWNDhwndCtl,UINTcodeNotify)中添加下面的代码

//上一曲

caseIDC_PRESONG:

{

JumpMusic(hwnd,0);

}

break;

//下一曲

caseIDC_NEXTSONG:

{

JumpMusic(hwnd,1);

}

break;



温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论