声音无法使用PlaySound

Sound not working with PlaySound

本文关键字:PlaySound 声音      更新时间:2023-10-16

所以我正在尝试制作一个简单的DLL来在另一个程序中播放声音。我正在尝试使用播放声音功能,我已经设置好了,但当我在其他程序中运行它时,我会收到默认的嘟嘟声。这是我的密码。

export double sound_manage(const char* file_old,double handler) 
{
    /*
    Handler values:
    0 - Play sound
    1 - Loop sound
    2 - Stop sound
    */
    bool good;
    double ret;
    double op;
    if (handler == 0) op = SND_ASYNC;
    if (handler == 1) op = SND_LOOP;
    if (handler == 2) op = SND_PURGE;
    LPCTSTR file;
    file = LPCTSTR(file_old);
    good = PlaySound(file,NULL,op);
    ret = double(good);
    return ret;
}

我在链接器中包含了winmib或其他什么,但我不知道发生了什么。

非常感谢您的帮助!

文档包括以下内容:

fdwSound中的三个标志(SND_ALIAS、SND_FILENAME和SND_RESOURCE)确定该名称是否被解释为系统的别名事件、文件名或资源标识符。如果没有这些标志如果指定了,PlaySound将在注册表或WIN.INI文件中搜索与指定声音名称的关联。

因此,如果你想在磁盘上播放文件,你必须包含SND_FILENAME标志,例如:

if (handler == 0) op = SND_ASYNC | SND_FILENAME;
if (handler == 1) op = SND_LOOP | SND_ASYNC | SND_FILENAME;

另外,这条线可能错了:

file = LPCTSTR(file_old);

如果不使用Unicode进行编译,则file_oldfile兼容,因此不需要强制转换。如果使用Unicode进行编译,则类型转换是不够的。

如果您得到默认的嘟嘟声,那么很可能是找不到声音文件。PlaySound在当前目录中搜索声音文件,然后是windows目录,然后是系统目录,最后是PATH。