关于 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.

 

 音  频率 编号
C#034.6525
D036.7126
D#038.8927
E041.2028
F043.6529
F#046.2530
G049.0031
G#051.9132
A055.0033
A#058.2734
B061.7335
C165.4136
C#169.3037
D173.4238
D#177.7839
E182.4140
F187.3141
F#192.5042
G198.0043
G#1103.8344
A1110.0045
A#1116.5446
B1123.4747
C2130.8148
C#2138.5949
D2146.8350
D#2155.5651
E2164.8152
F2174.6153
F#2185.0054
G2196.0055
G#2207.6556
A2220.0057
A#2233.0858
B2246.9459
C3261.6360
C#3277.1861
D3293.6662
D#3311.1363
E3329.6364
F3349.2365
F#3369.9966
G3391.9967
G#3415.3068
A3440.0069
A#3466.1670
B3493.8871
C4523.2572
C#4554.3673
D4587.3374
D#4622.2575
E4659.2576
F4698.4677
F#4739.9978
G4783.9979
G#4830.6180
A4880.0081
A#4932.3382
B4987.7783
C51046.5084
C#51108.7385
D51174.6686
D#51244.5187
E51318.5188
F51396.9189
F#51479.9890
G51567.9891
G#51661.2192
A51760.0093
A#5  1864.6594
B51975.3395
C62093.00 96

 



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

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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值