VC编写音频播放器.ppt_第1页
VC编写音频播放器.ppt_第2页
VC编写音频播放器.ppt_第3页
VC编写音频播放器.ppt_第4页
VC编写音频播放器.ppt_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

VC+编写音乐播放器,程序效果,音乐播放器可以播放Windows下常用的音频和视频文件,如MP3、MIDI、WAV、WMA等。程序的界面如图所示。用户可通过文件对话框添加想要播放的文件和删除音乐文件,并可实现暂停、关闭或重播的功能,并显示播放的时间和正在播放文件的全路径和文件名,同时,在媒体文件播放的过程中,用户可随时调节音,还可以设置播放模式,如单曲循环,顺序播放等,同时,可以同步歌词。,程序界面,创建初始界面程序,实现界面美化 1,首先新建一个工程,取个好听的名字,这里命名为Multimedia,然后选择Dialog based,点击OK完成。 2,设置对话框显示风格。在对话框点右键属性,设置边框为细小,把标题栏复选框去掉,其他默认。如图:,3,界面布局。在对话框中添加相应的控件,完成相应功能,最终效果如图:,4.进行对话框、控件的相应美化。 (1)给对话框添加背景 (2)给按钮添加位图 (3)使静态文本透明 实现播放音乐 Windows MCI与多媒体软件开发 Windows MCI(Media Control Interface)是控制多媒体设备的高层命令接口,提供了与设备无关的控制多媒体设备的方法。MCI可控制的多媒体设备包括标准的多媒体设备,如CD音频(CD Audio)、数字视频、动画、Wave格式数字声音和MIDI音序器,以及影碟机等可选设备。MCI包含在Windows系统的MMSYSTEM.DLL动态链接库中,用以协调多媒体事件和MCI设备驱动程序之间的通信。一些MCI设备驱动程序,影碟机设备驱动程序,可以直接控制目标设备;另外一些MCI 设备驱动程序,如Wave和MIDI 设备驱动程序,通过MMSYSTEM中的函数间接控制目标设备;还有一些MCI设备驱动程序则提供了与其他Windows动态链接库的高层接口。MCI提供两种不同但相互联系的接口方式。第一种方式利用消息和数据结构来给多媒体设备发送命令并接收设备传来的信息,这种方法用函数mciSendCommand来给设备发送命令。其原型为:,MCIERROR mciSendCommand ( MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam ); 参数IDDevice表示用来接收命令的设备的标识符,注意在打开设备时不用该参数 uMsg是要发送的命令;fdwCommand是命令消息的标志,而参数dwParam则是一个指向包含命令消息的参数的结构。如该参数返回非0 值,则表示设备驱动出错,这时可用mciGetErrorString函数来取得错误信息,其原型为: BOOL mciGetErrorString ( DWORD fdwError, LPTSTR lpszErrorText, UINT cchErrorText ); 参 数 fdwError 是由mciSendCommand 或mciSendString 返回的错误代码; 参数 lpszErrorText是一个指针,它指向用来存储错误描述信息的缓冲区;参数cchErrorText表示缓冲区的长度,以字符为单位。,MCI接口的第二种方式是使用ASCII字符串来发送驱动设备的命令,这种方式采用函 数mciSendString把命令字符发送给设备。其原型为: MCIERROR mciSendString ( LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, 第5 章媒体播放器多媒体程序设计113 HANDLE hwndCallback ); 参数lpszCommand是要发送的MCI命令字符串;参数lpszReturnString是一个指向接收返回信息的缓冲区的指针;cchReturn表示缓冲区的长度,以字符为单位;hwndCallback是回调窗口的句柄,一般为NULL。 这 种 字 符 串 命 令 很 直 观 方 便 , 近 似 自 然 语 言 , 如 “ play cdaudio ” , “stop waveaudio”等。返回的信息字符串由lpszReturnString带回,如该函数返回非0值,同样可用mciGetErrorString获取错误信息。,为了使用MCI编程,必须包含多媒体头文件: #include 并在项目属性中添加对多媒体库winmm.lib链接。,wchar_t buf256; MCIERROR err = mciSendString(L“open cdaudio alias cd“, NULL, 0, NULL); / 打开CD if (err) if (mciGetErrorString(err, buf, 256) MessageBox(buf, L“Error“); / 获得并显示错误串 return; mciSendString(L“status cd number of tracks“, buf, 256, NULL); / 获得音轨总数 m_nTracks = wcstol(buf, NULL, 10); / 这里使用了宽字符版的字符串到整数的 / 转换函数:long wcstol( const wchar_t *nptr, wchar_t *endptr, int base ); wsprintf(buf, L“play cd from %d to %d“, m_nFrom, m_nTo); mciSendString(buf, NULL, 0, NULL); / 从音轨m_nFrom头播放到音轨m_nTo1尾,其他常用命令: mciSendString(L“set cd time format tmsf“, NULL,0,NULL); / 设置时间格式为 / 轨(100):分(100):秒(60):帧(75),一秒=75块,一块=98帧 mciSendString(L“set cd door open“, NULL, 0, NULL); / 打开光驱 mciSendString(L“set cd door closed“, NULL, 0, NULL); / 关闭光驱 mciSendString(L“pause cd“, NULL, 0, NULL); / 暂停播放 mciSendString(L“resume cd“, NULL, 0, NULL); / 恢复播放 mciSendString(L“stop cd“, NULL, 0, NULL); / 停止播放 mciSendString(L“close cd“, NULL, 0, NULL); / 关闭CD设备 mciSendString(L“status cd length“, buf, 256, NULL); / 获得整个CD的音轨总长度 mciSendString(L“status cd length track 5“, buf, 256, NULL); / 获得第5个音轨的长度 mciSendString(L“status cd current track“, buf, 256, NULL); / 获得当前音轨号,注意: “play cd from m_nFrom to m_nTo“是完整形式,它还有其他形式: “play cd from m_nFrom“从m_nFrom播放到盘尾 “play cd to m_nTo“从当前位置播放到指定音轨 “play cd“ 从当前位置播放到盘尾 例如播放最后一首歌:“play cd from m_nLast“ 2)WAV wchar_t buf256; wsprintf(buf, L“open “%s“ alias sound type waveaudio“, pDoc-strFilePath); MCIERROR err = mciSendString(buf, NULL, 0, NULL); if (err) if (mciGetErrorString(err, buf, 256) MessageBox(buf, L“Error”); return; ,/ t1和t2为用户指定的起止时间(单位为秒,浮点变量) DWORD start = (DWORD)(t1 * 1000 + 0.5), end = (DWORD)(t2 * 1000 + 0.5); wsprintf(buf, L“play sound from %ld to %ld“, start, end); mciSendString(buf, NULL, 0, NULL); 其他常用命令: mciSendString(L“status sound length“, buf, 256, NULL); mciS

温馨提示

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

评论

0/150

提交评论