如何播放一个wav文件?(50分)

  • 主题发起人 主题发起人 iceiceberg
  • 开始时间 开始时间
I

iceiceberg

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi里怎么播放一个wav文件呢?我用了sndPlaySound和playSound 怎么delphi都不认这 些语句呢?
 
PlaySound ('dog.wav', 0, snd_Async);
函数所在单元:MMSystem;
 
我也想用delphi来播放wav以及其他的音频格式,大家一起讨论!
 
谢谢hnlygtjj,播放成功了,原来是我忘记声明MMSystem了。
但是playsound的后两个参数是什么意思呢?它们的各 个选项都有什么意义呢?
我在delphi的说明文件里找不到关于playsound的说明啊,它在哪儿呢?
谢谢。
 
参考飞思科技出的《Delphi高级编程》中的15章
 
它的说明在帮助里有吗?麻烦哪位告诉我一下,我找不着。:(
 
这是一个api函数,在delphi->Help->Windows SDK里可以找到它的帮助
 
我刚才又看了下delphi
hnlygtjj 或的没有错,确实在那个里面!
 
不好意思,又有新问题了,有怎样也能使一段音效在程序里不断地播放呢?我在OnFormCreate里用了PlaySound('out.wav',0,snd_loop or snd_Async);
可是只要一有新的音效播放,它就自动停了。怎么解决呢?
另外,我一开始是用的and来连接的loop 和Async,结果运行时只播音乐,不生成窗体了。
and和or在这里到底有什么差别呢?
谢谢!


 
为什么没人回复呢?难道在delphi中不能同时播放两个音效吗?
 
可以播放多个文件,用DirectSond
 
但DirectSound怎么使呢?我不会:(
要不您跟我说说它在说明文件的哪个地方也成啊。
谢谢
 
随便找个控件就可以解决了,比如上面的
 
可是这个控件在哪儿呢,我找不着呀!:(
 
用本身的控件就是了
我有代码!
 
我有,不过是vc写的
 
给我发过来行吗,谢谢。
iceiceberg@xinhuanet.com
 
use mmsystem;
SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC)

///////////////////////////////////
unit PlaySnd1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
PlaySndFromFile: TButton;
PlaySndFromMemory: TButton;
PlaySndbyLoadRes: TButton;
PlaySndFromRes: TButton;
procedure PlaySndFromFileClick(Sender: TObject);
procedure PlaySndFromMemoryClick(Sender: TObject);
procedure PlaySndFromResClick(Sender: TObject);
procedure PlaySndbyLoadResClick(Sender: TObject);
private

{ Private declarations }
public
{ Public declarations }
end;


var
Form1: TForm1;

implementation

{$R *.DFM}

{$R snddata.res}

uses MMSystem;

procedure TForm1.PlaySndFromFileClick(Sender: TObject);
begin

sndPlaySound('hello.wav',
SND_FILENAME or SND_SYNC);
end;


procedure TForm1.PlaySndFromMemoryClick(Sender: TObject);
var
f: file;
p: pointer;
fs: integer;
begin

AssignFile(f, 'hello.wav');
Reset(f,1);

fs := FileSize(f);
GetMem(p, fs);
BlockRead(f, p^, fs);
CloseFile(f);
sndPlaySound(p,
SND_MEMORY or SND_SYNC);
FreeMem(p, fs);
end;


procedure TForm1.PlaySndFromResClick(Sender: TObject);
begin

PlaySound('HELLO',
hInstance,
SND_RESOURCE or SND_SYNC);
end;


procedure TForm1.PlaySndbyLoadResClick(Sender: TObject);
var
h: THandle;
p: pointer;
begin

h := FindResource(hInstance,
'HELLO',

'WAVE');
h := LoadResource(hInstance, h);
p := LockResource(h);
sndPlaySound(p,
SND_MEMORY or SND_SYNC);
UnLockResource(h);
FreeResource(h);
end;



end.


 

Similar threads

后退
顶部