关于 Beep、MessageBeep 和 Windows.Beep

Delphi 在 SysUtils 单元定义 Beep 方法, 可以发出一个声音, 一般用于提醒和调试.

Beep 其实是调用的 API 函数: MessageBeep(MB_OK);
MessageBeep 有下面几种用法可以调用几种不同的声音文件:

MessageBeep(MB_OK);

MessageBeep(MB_ICONHAND);

MessageBeep(MB_ICONQUESTION);    {这个不响, 不知道为什么}

MessageBeep(MB_ICONEXCLAMATION);

MessageBeep(MB_ICONASTERISK);

MessageBeep($FFFFFFFF);          {同 MessageBeep(MB_OK);}


 
   

Beep 同时也是一个 API 函数, 它可以指定声音的高度和长度; 因为和 SysUtils.Beep 重名了, 所以应该这样调用:
Windows.Beep(音高, 长度);

譬如: Windows.Beep(440, 2000); 会把一个国际标准音(440HZ)演奏 2 秒钟.
另外第一个参数的取值范围是: $25 - $7FFFF.

下面的程序会演奏<奥运会主题歌>的第一句:

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;



type

  TForm1 = class(TForm)

    Button1: TButton;

    procedure Button1Click(Sender: TObject);

  end;



var

  Form1: TForm1;



implementation



{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);

const

  t = 800;

begin

  Windows.Beep(330, t);

  Windows.Beep(392, t);

  Windows.Beep(262, t*2);



  Windows.Beep(294, t);

  Windows.Beep(330, t);

  Windows.Beep(196, t*2);



  Windows.Beep(262, t);

  Windows.Beep(294, t);

  Windows.Beep(330, t);

  Windows.Beep(392, t);

  Windows.Beep(294, t*4);

end;



end.


 
   

你可能感兴趣的:(windows)