Lazarus 循环播放音乐
Lazarus play music in loop
这几天我一直在研究一个小工具,功能本身还不错。
我想让这个工具更易于使用(至少对我而言)并包含一个声音文件(称为 test.wav),它播放我最喜欢的歌曲之一。
当时的想法是,这首歌会不断重复自己,但经过一次后,音乐就会停止。这是我的音乐部分的代码片段:
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 顺便说一句。
PlaySound
函数是(仍然)documented
有趣的设置在第三个参数fdwSound
里面SND_LOOP
:
SND_LOOP The sound plays repeatedly until PlaySound is called again with the pszSound parameter set to NULL. If this flag is set, you must also set the SND_ASYNC flag.
注意最后一句话。所以正确的调用是:
PlaySound('test.wav', 0, SND_ASYNC or SND_LOOP);
要在程序启动时自动激活它,请使用 OnCreate()
事件形式。
这几天我一直在研究一个小工具,功能本身还不错。 我想让这个工具更易于使用(至少对我而言)并包含一个声音文件(称为 test.wav),它播放我最喜欢的歌曲之一。
当时的想法是,这首歌会不断重复自己,但经过一次后,音乐就会停止。这是我的音乐部分的代码片段:
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 顺便说一句。
PlaySound
函数是(仍然)documented
有趣的设置在第三个参数fdwSound
里面SND_LOOP
:
SND_LOOP The sound plays repeatedly until PlaySound is called again with the pszSound parameter set to NULL. If this flag is set, you must also set the SND_ASYNC flag.
注意最后一句话。所以正确的调用是:
PlaySound('test.wav', 0, SND_ASYNC or SND_LOOP);
要在程序启动时自动激活它,请使用 OnCreate()
事件形式。