首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >声音不适用于PlaySound

声音不适用于PlaySound
EN

Stack Overflow用户
提问于 2014-10-18 21:52:10
回答 2查看 661关注 0票数 2

因此,我试图制作一个简单的DLL来播放另一个程序中的声音。我正在尝试使用播放声音函数,并且设置了它,但是当我在另一个程序中运行它时,我会得到默认的beep。这是我的密码。

代码语言:javascript
复制
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或其他什么,但我不知道发生了什么。

任何帮助都是非常感谢的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-18 22:04:09

文档包括以下内容:

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

因此,如果要在磁盘上播放文件,则必须包括SND_FILENAME标志,例如:

代码语言:javascript
复制
if (handler == 0) op = SND_ASYNC | SND_FILENAME;
if (handler == 1) op = SND_LOOP | SND_ASYNC | SND_FILENAME;

另外,这句话可能是错的:

代码语言:javascript
复制
file = LPCTSTR(file_old);

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

票数 0
EN

Stack Overflow用户

发布于 2014-10-18 22:01:10

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26444916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档