- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC++编写音乐播放器 程序效果 程序界面 创建初始界面程序 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 mmsystem.h 并在项目属性中添加对多媒体库winmm.lib链接。 wchar_t buf[256]; MCIERROR err = mciSendString(Lopen cdaudio alias cd, NULL, 0, NULL); // 打开CD if (err) { if (mciGetErrorString(err, buf, 256)) MessageBox(buf, LError); // 获得并显示错误串 return; } mciSendString(Lstatus 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, Lplay cd from %d
文档评论(0)