【问题标题】:Lazarus play music in loopLazarus 循环播放音乐
【发布时间】:2021-06-27 18:54:19
【问题描述】:

过去几天我一直在研究一个小工具,功能本身很好。 我想让这个工具更好地使用(至少对我来说),并包含一个声音文件(称为 test.wav),它可以播放我最喜欢的歌曲之一。

这个想法是歌曲不断重复,但在播放完之后,音乐就停止了。这是我的音乐部分的代码-sn-p:

procedure TForm1.music();
begin
    PlaySound('test.wav', 0, SND_ASYNC);
end;   

当我将 SND_ASYNC 更改为 SND_LOOP 并开始调试我的项目时,我的 .exe-Windows 不会出现,但会播放音乐(也只播放一次)。

还在 project.lpr 中调用过程:

begin
      ...
      Form1.music();
      Application.Run; 

那么如何让音乐不断循环播放呢?它不一定是 .wav 顺便说一句。

【问题讨论】:

  • 我的回答解决了你的问题吗?如果是,请考虑通过单击绿色勾号来标记它,可选择投票。如果不是,请解释发生了什么。
  • 哦,对不起,我以为我已经这样做了。但似乎我的评论也没有发送。是的,效果很好,我现在再做一次。

标签: lazarus background-music playsound


【解决方案1】:

PlaySound 函数是(仍然)documented

有趣的设置在第三个参数中fdwSound,还有关于SND_LOOP的说法:

SND_LOOP 声音重复播放,直到再次调用 PlaySound 并将 pszSound 参数设置为 NULL。如果设置了此标志,您还必须设置 SND_ASYNC 标志。

注意最后一句话。所以正确的调用是:

PlaySound('test.wav', 0, SND_ASYNC or SND_LOOP);

要在程序启动时自动激活它,请使用OnCreate() 事件的形式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多