【发布时间】:2013-07-15 20:42:52
【问题描述】:
我正在尝试制作一个在 TEdit 中的每次按键时播放声音文件的程序。
我在 Edit1 KeyPress 事件的资源文件中尝试了 sndPlaySound,但问题是它无法像在真正的键盘输入中那样完全播放声音。每次按下按键之间都会出现声音播放延迟。
procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
sndPlaySound(PCHAR('KeyPress'), SND_RESOURCE OR SND_ASYNC);
end;
此代码确实会播放声音,但如果您快速键入,则只有在您键入的最后一个键时,您才会听到正在播放的声音文件。
【问题讨论】:
-
我认为您永远不会使用 Windows API 来实现这一点。我建议您使用一些专门的音频库,例如
Bass音频库。 -
您能否提供一个工作示例,说明如何使用 Bass 来实现我在问题中描述的内容?
-
嗯,这就是你可以尝试自己做的事情。 StackOverflow 不是“请为我编写代码” 服务。但是,既然这很容易,我会破例;试试代码
like this。只是不要忘记下载library itself,然后从该存档中使Bass.pas单元在项目的搜索路径中可见,Bass.dll在项目的输出中可见。请注意,它不是 Delphi 中唯一可用的音频库,我不想支持它。这只是我头顶上的第一个...... -
正是我要找的……非常感谢
-
不客气!无论如何,请随时将该代码包含在您的下面的帖子中和
accept it。