none
关于playsound函数 RRS feed

  • 问题

  • 我在VS2017里调用Playsound函数,但是该函数找不到wav的位置发出了缺省声音,求大佬帮我解决下~代码如下:

    #include <iostream>
    #include <stdlib.h>
    #include <Windows.h>
    #include <conio.h>
    #include <mmsystem.h>
    #pragma comment(lib,"WINMM.LIB")
    using namespace std;
    int main()
    {
     int a = _getch();
     if (a == 'a')
     {
      PlaySound((LPCWSTR)"E:\\K.wav",NULL, SND_FILENAME|SND_ASYNC);
     }
     system("pause");
     return 0;
    }

    2017年8月27日 2:03

全部回复

  • Hi BEAT_Heart,

    感谢在MSDN论坛发帖。

    根据MSDN官方文档,PlaySound()采用LPCTSTR(const TCHAR *)作为输入。在WinDef.h中,TCHAR映射到wchar_t或char取决于是否定义了UNICODE。

    #ifdef UNICODE
     typedef LPCWSTR LPCTSTR; 
    #else
     typedef LPCSTR LPCTSTR;
    #endif

    所以建议你尝试以下几种方式。

    PlaySoundW(TEXT("E:\\K.wav"), NULL, SND_FILENAME|SND_ASYNC);
    PlaySoundW(L"E:\\K.wav", NULL, SND_FILENAME|SND_ASYNC);

    在我的Win10, vs2017上测试可以正常播放。

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support<br/> Please remember to click &quot;Mark as Answer&quot; the responses that resolved your issue, and to click &quot;Unmark as Answer&quot; if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact <a href="mailto:MSDNFSF@microsoft.com">MSDNFSF@microsoft.com</a>.



    • 已建议为答案 Baron Bi 2017年9月15日 3:10
    • 已编辑 Baron Bi 2017年9月19日 3:42
    2017年8月28日 3:12