我不知道为什么这个不能播放现有文件。 Windows给出了一个错误,但是我不知道是什么。
我之前添加了一张支票,以确保它存在。我也尝试过绝对路径。
string wavPath = "c:\\frog.wav";
struct stat stFileInfo;
bool blnReturn = (stat(wavPath.c_str(), &stFileInfo) == 0); //this returns true
FILE* fp = fopen(wavPath.c_str(), "r");
if (fp) {
fclose(fp); //this triggers
}
PlaySound(wavPath.c_str(), NULL, SND_FILENAME | SND_ASYNC); //m_hinstance
//C:\\Users\\Wollan\\My Code\\A\\Debug\\frog.wav
//TEXT("frog.wav")
//TEXT(wavPath.c_str())
//(LPCSTR)"frog.wav¨
文件在WMP中播放正常。
答案 0 :(得分:1)
以下代码完美有效:
PlaySound(L"C:\\Windows\\Media\\Cityscape\\Windows Balloon.wav", 0, SND_FILENAME );
添加SND_ASYNC
无法播放。
答案 1 :(得分:0)
pszSound参数是文件名。如果找不到该文件, 除非SND_NODEFAULT标志是,否则该函数将播放默认声音 集。
和
PlaySound在以下目录中搜索声音文件: 当前目录; Windows目录; Windows系统 目录; PATH环境变量中列出的目录;和 网络中映射的目录列表。如果功能不能 找到指定的声音并且未指定SND_NODEFAULT标志, PlaySound使用默认的系统事件声音。
没有为此结果指定其他案例。
因此,您听到一个响铃声表示该文件未找到,尽管您保证相反。
我会仔细检查stat
电话的结果;我甚至无法在文档中找到stat
;它似乎不是Windows的一部分。