




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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
kok电子竞技:最新文档
- 农业废弃物处理批发考核试卷
- 气体压缩机械的故障诊断与智能维修系统考核试卷
- 橡胶合成过程中的工艺参数模拟考核试卷
- 氮肥产业链的优化与产业协同发展考核试卷
- 投资组合的主动管理技术与方法应用考核试卷
- 机床附件的企业形象宣传与品牌塑造考核试卷
- 批发企业绩效评估与激励机制考核试卷
- 人教kok电子竞技初中历史与社会八kok电子竞技上册 1.1 亚非大河文明-大河流域的文明发祥地 教学设计
- 机器人智能编程与自动化编程考核试卷
- 植物油加工过程中的副产物综合利用技术考核试卷
- 第八单元+中华民族的抗日战争和人民解放战争+作业设计方案 高一统编kok电子竞技2019必修中外历史纲要上册
- 第二章美容手术的特点及其实施中的基本原则美容外科学概论讲解
- 2024kok电子竞技政府机关临时工作人员劳动协议样本一
- 2025年湖北省新华书店(集团)限公司招聘(93人)高频重点提升(共500题)附带答案详解
- 《铁路技术管理规程》(普速铁路部分)
- 2024-2025年度“地球小博士”全国地理科普知识大赛参考试题库(含答案)
- 景区门票优惠审批流程制度
- 2024年4月全国自考计算机应用基础试卷及答案
- 减少铝模砼剪力墙表面气泡
- 老旧小区电梯更换方案
- 酒店大堂石材养护专项方案
评论
0/150
提交评论