声音播放函数PlaySound的使用(转的)

来源:互联网 发布:联合石油数据库官网 编辑:程序博客网 时间:2024/05/20 20:21

学生问题:

我在vc中建立了一个空项目,然后写了以下代码格式是.cpp,但是运行时并没有出现错误就是不能实现声音播放,我搞不懂了

#include <windows.h>

#include<iostream>

#include<conio.h>

using namespace std;

 

#pragma comment(lib, "winmm.lib")

void main()

{

  

        PlaySound("D:\\VCsound\\s.wav", NULL, SND_FILENAME | SND_ASYNC);

        cout<<"Heloo\n";

        getch();

 

}

 

分析原因:

上述代码使用到了BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound)这个声音播放API函数。这个函数具体用法网上有很多,在这里不再赘述。上述代码在VC6.0开发环境中可能运行起来完全没有问题,能够很好的播放wav格式声音文件。但是在VC2010开发环境中,字符串的表达不一样了,同样的代码,也许编译能够通过,但是运行起来会找不到pszSound参数表示的声音文件。需要对pszSound参数做一定的处理。

解决方案一:下面的代码是在VC2010开发环境中运行没有问题的,能够很好的播放wav声音文件。

#include <windows.h>
#include<iostream>

using namespace std;
 
#pragma comment(lib, "winmm.lib")
void main()
{
  
        bool playSucc  = PlaySound(TEXT("D:\\speech.wav"), NULL, SND_FILENAME | SND_SYNC);
        if(playSucc)
   
  cout<<"Success to play!"<<endl;
 }
 else
 {
  cout<<"Fail to paly!"<<endl;
 }

 system("pause");
}

解决方案二:不处理pszSound参数,而是更改VC2010的项目属性,但是不太推荐这种方法。为什么呢?套用一位资深代码人的话:让自己的程序适应各种字符集是我们写代码的人义不容辞的义务。还是奉上具体方法如下:

选择菜单:Project->Properties,弹出project的属性对话框,将“general”配置项里的“Character Set”改为“Use Multi-Byte Character Set”。

原创粉丝点击