2017-05-09 143 views
0

我在使用內置函數PlaySound時遇到了一些問題。我連續地接收兩個錯誤,第一個是:在C++中正確使用PlaySound函數

類型 「爲const char *」 的說法是,類型爲 「LPCWSTR」 的參數不相容,

,第二個是:

'BOOL PlaySoundW(LPCWSTR,HMODULE,DWORD)':不能將參數1從'const char [35]'轉換爲'LPCWSTR'。

我似乎無法自己解決這些問題,並希望找出如何擺脫錯誤的一些幫助。以下是我的源代碼部分,包括我認爲會導致錯誤的部分。

#include <iostream> 
#include <string> 
#include <iomanip> 
#include <dos.h> 
#include <windows.h> 
#include <playsoundapi.h> 
#include <mmsystem.h> 
using namespace std; 
int main() 
{ 
    PlaySound("C:\\Users\\Cristian\\Desktop\\cafe.mp3", NULL, SND_FILENAME | SND_ASYNC); 
    return 0; 
} 

如果我錯誤地使用了PlaySound功能,請將我指向正確的方向。

回答

1

LPCWSTRconst wchar_t *宏 - 所以你需要使用一個寬字符字符串wchar_t代替L""正常char""的。

const wchar_t* path = L"C:\\Users\\Cristian\\Desktop\\cafe.mp3"; 
PlaySound(path , NULL, SND_FILENAME | SND_ASYNC); 

老派的Win32的方法是使用TCHAR可選#define UNICODE,但是這被認爲是不合時宜的「ANSI」 Win32函數不支持UCS-2/UTF-16(和MBCS不,令人驚訝的是指UTF-8)。

請注意,您可能希望使用SND_SYNC而不是SND_ASYNC,因爲程序將在聲音結束前停止播放。

最後,PlaySound不支持MP3文件 - 只有Wave文件 - 所以你的代碼不會工作,無論。

要在Win32中播放MP3文件,你需要使用兩種: