因此,我试图制作一个简单的DLL来播放另一个程序中的声音。我正在尝试使用播放声音函数,并且设置了它,但是当我在另一个程序中运行它时,我会得到默认的beep。这是我的密码。
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或其他什么,但我不知道发生了什么。
任何帮助都是非常感谢的!
发布于 2014-10-18 22:04:09
文档包括以下内容:
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_old与file兼容,因此不需要强制转换。如果使用Unicode编译,类型广播是不够的。
发布于 2014-10-18 22:01:10
如果您得到默认的beep,那么很可能找不到声音文件。PlaySound搜索当前目录中的声音文件,然后是windows目录,然后是系统目录,最后是路径。
https://stackoverflow.com/questions/26444916
复制相似问题