怎么在调用Api放声音时可以连续播放几个声音文件?

Puto 2003-08-29 10:40:30
这是我声明的外部函数:
FUNCTION boolean sndPlaySoundA (string SoundName, uint Flags) LIBRARY "WINMM.DLL"
Function Uint LoadLibraryA(String As_Library) Library "kernel32.dll"
Subroutine FreeLibrary (Uint Hinstance) Library "kernel32.dll"

这是播放声音文件:
Uint Lu_instance
Lu_instance = LoadLibraryA("winmm.dll")
if Lu_instance = 0 then
SndPlaySoundA(ls_filename,1)
FreeLibrary(Lu_instance)
end if

如果我要接着播放第二段声音文件,该怎么写。
我曾经试过直接在后面加上播放第二段的语句,结果运行时就只能播放第二段了。如果把播放参数1(异步播放)改为0(同步播放)就可以连续播放几段声音文件,但是同时窗口变成无响应状态了,结果还是行不通

请高手指教
...全文
39 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Puto 2003-08-30
  • 打赏
  • 举报
回复
怎么创建线程?

如果用媒体播放控件,怎么动态的改变被播放文件的文件名
Puto 2003-08-30
  • 打赏
  • 举报
回复
用媒体播放器控件,怎么才能在程序中制定播放的文件名?
zzutligang 2003-08-30
  • 打赏
  • 举报
回复
还有一个简单的方法,你可以将媒体播放器的控键放到窗口上,用这个控键来播放不是很好吗?我的一个程序就是用这个方法来实现的。
zzutligang 2003-08-30
  • 打赏
  • 举报
回复
你创建一个线程,在线程中播放不可以吗?
Puto 2003-08-30
  • 打赏
  • 举报
回复
楼上的好早啊,你说的方法我试试先
dingzhaofeng 2003-08-30
  • 打赏
  • 举报
回复
我替你来蹲着....

利用FreeLibrary()的返回值+最大循环次数控制播放,行吗?
Puto 2003-08-29
  • 打赏
  • 举报
回复
我先睡觉去了,明天再来蹲着。
Puto 2003-08-29
  • 打赏
  • 举报
回复
加菲猫,你的代码我试过,虽然可以连续播放,但是同样会造成在声音播放同时窗口无响应

强烈召唤更好的解决办法,我只要求两点,一是可以连续播放几个声音文件,二是播放同时窗口不能无响应
纳米茶 2003-08-29
  • 打赏
  • 举报
回复
SndPlaySoundA(ls_filename,8)
第二个参数是播放选项,8的意思是循环播放一遍,10则是不停的循环播放,直至你关掉程序为止。
纳米茶 2003-08-29
  • 打赏
  • 举报
回复
int li_i,li_loop=3
string ls_filename
Uint Lu_instance
Lu_instance = LoadLibraryA("winmm.dll")
if Lu_instance = 0 then
for li_i = 1 to li_loop
ls_filename = 'c:\'+string(li_i) + '.wav'
SndPlaySoundA(ls_filename,8)
FreeLibrary(Lu_instance)
next
end if

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧