科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件VC中用低级音频函数WaveX播放声音

VC中用低级音频函数WaveX播放声音

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

Windows通过高级音频函数、媒体控制接口MCI设备驱动程序;

作者:王结太 来源:CSDN 2007年10月19日

关键字: VC WaveX 播放声音

  • 评论
  • 分享微博
  • 分享邮件
Windows通过高级音频函数、媒体控制接口MCI设备驱动程序;低级音频函数MIDI Mapper、低级音频设备驱动;以及DirectSound提供了音频服务,可以从声卡获取音频流。

  1. 播放声音文件的其它方法

  在介绍wavex系列之前,我先来介绍之外的其它几种方法:

  1.1 MCI方法简介

  用MCI方法是很方便的,它对媒体设备控制主要通过命令接口函数mciSendCommand()或者字符串接口函数mciSendString()来完成的,这两个函数的作用相同。命令接口函数比命令字符串使用起来要复杂,但它为MCI提供了更为强大的控制能力,两个接口函数的原型:

MCIERROR mciSendCommand(MCIDEVICEID IDDevice,UINT uMsg,DWORD fdwCommand,DWORD dwParam);
MCIERROR mciSendString(LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback);

  比如要使用mciSendCommand方法,我们先在MCI_OPEN_PARMS中设置要播放的文件并发送MCI_OPEN命令打开声音设备,发送MCI_PLAY命令消息播放,结束后发送MCI_STOP命令关闭设备。关于它们的具体使用方法可以参考MSDN。

  1.2 PlaySound方法

BOOL sndPlaySound(LPCSTR lpszSound, UINT fuSound );
BOOL PlaySound(LPCSTR pszSound,HMODULE hmod, DWORD fdwSound);

  其中参数lpszSound是需要播放声音的.WAV文件的路径和文件名,hmod在这里为NULL,fuSound是播放声音的标志,详细说明请参考VC++中的帮助。 例如播放C:\sound\music.wav可以用sndPlaySound ("c:\\sound\\music.wav",SND_ASYNC);或PlaySound("c:\\sound\\music.wav",NULL, SND_ASYNC|SND_NODEFAULT );如果没有找到music.wav文件,第一种格式将播放系统默认的声音,第二种格式不会播放系统默认的声音[1],这是SND_NODEFAULT标志的作用。

  当然我们也可以将声音文件作为用户自定义资源加入程序资源文件中,经过编译连接生成EXE文件,这样就可以实现无.WAV文件的声音播放。利用上面的函数也很简单,如下,其中IDR_YOUR_WAVE是加入的wave文件资源标识符:

PlaySound(MAKEINTRESOURCE(IDR_YOUR_WAVE),GetModuleHandle(NULL), SND_RESOURCE);
    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章