我是靠谱客的博主 感动便当,最近开发中收集的这篇文章主要介绍(Win32)PlaySound播放Wav声音+mciSendString播放多媒体,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

有时需要播放音乐或者音效,可参考本文的方案。

PlaySound播放Wav音频

可以使用PlaySound()函数播放Wav声音,该函数原型为:
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);

  1. 参数pszSound是指定了要播放声音的字符串,该参数可以是MP3文件的名字,或是MP3资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。
  2. 参数hmod是应用程序的实例句柄,当播放MP3资源时要用到该参数,否则它必须为NULL。
  3. 参数fdwSound是标志的组合,各种可选的标志及意义如下所示。若成功则函数返回TRUE,否则返回FALSE。

播放标志以及含义:

  • SND_APPLICATION 用应用程序指定的关联来播放声音。
  • SND_ALIAS pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
  • SND_ALIAS_ID pszSound参数指定了预定义的声音标识符。
  • SND_ASYNC 用异步方式播放声音,PlaySound函数在开始播放后立即返回。
  • SND_FILENAME pszSound参数指定了MP3文件名。
  • SND_LOOP 重复播放声音,必须与SND_ASYNC标志一块使用。
  • SND_MEMORY 播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
  • SND_NODEFAULT 不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
  • SND_NOSTOP PlaySound不打断原来的声音播出并立即返回FALSE。
  • SND_NOWAIT 如果驱动程序正忙则函数就不播放声音并立即返回。
  • SND_PURGE 停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
  • SND_RESOURCE pszSound参数是WAVE资源的标识符,这时要用到hmod参数。
  • SND_SYNC 同步播放声音,在播放完后PlaySound函数才返回。

示例:(把音乐文件“Ringout.wav”或者其它Wav格式放在程序目录下)


// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
int _tmain(int argc, _TCHAR* argv[])
{
PlaySound(_T("Ringout.wav"), NULL, SND_FILENAME | SND_SYNC);
MessageBox(NULL, _T("同步播放完毕"), _T("信息"), MB_OK);
PlaySound(_T("Ringout.wav"), NULL, SND_FILENAME | SND_ASYNC);
MessageBox(NULL, _T("异步播放立即返回"), _T("信息"), MB_OK);
system("pause");
return 0;
// 只能同时播放一段音乐,启动新的、旧的就被停了
// 如果想停止目前的播放而不播放新音乐呢?只要给PlaySound的第一参数传递NULL就可以停止目前的播放了。
}

缺点:在一个线程里无法同时播放多个声音。

来源:播放声音文件PlaySound函数应用

mciSendString播放多媒体

可以播放音频、视频。参阅:mciSendString用法

更推荐使用强大的BASS音频库:BASS


最后

以上就是感动便当为你收集整理的(Win32)PlaySound播放Wav声音+mciSendString播放多媒体的全部内容,希望文章能够帮你解决(Win32)PlaySound播放Wav声音+mciSendString播放多媒体所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部