??Win32 API中有个非常有意思的发音函数Beep(),可以用它在扬声器上播放简单的音调,如果按简谱来设置播放的内容,就可以播放一些简单的音乐了。
函数原型:
BOOL WINAPI Beep(
__in DWORD dwFreq,
__in DWORD dwDuration
);
函数说明:
第一个参数表示频率,用Hz为单位,可以在0x25到0x7FFF之间。
第二个参数表示持续的时间,以毫秒为单位。
与这个函数类似的是:
BOOL WINAPI MessageBeep(
__in UINT uType
);
这个函数使用要广泛的多。相当多的程序在MessageBox()之前都会调用MessageBeep()来发出一些提示音(实际上是播放系统音乐文件)。
可供选择的参数有:
MB_ICONASTERISK |
SystemAsterisk |
MB_ICONEXCLAMATION |
SystemExclamation |
MB_ICONHAND |
SystemHand 警告音 |
MB_ICONQUESTION |
SystemQuestion |
MB_OK |
SystemDefault |
再附上本人收藏的几个用Beep()播放音乐的程序,虽然音质无法与音频文件媲美,但做个小小的娱乐还是可以的:
生日快乐歌曲
[cpp] view plain copy print
- // 播放 生日快乐
-
#include
- void main(void)
- {
- unsigned FREQUENCY[] = {392,392,440,392,523,494,
- 392,392,440,392,587,523,
- 392,392,784,659,523,494,440,
- 689,689,523,587,523};
- unsigned DELAY[] = {375,125,500,500,500,1000,
- 375,125,500,500,500,1000,
- 375,125,500,500,500,500,1000,
- 375,125,500,500,500,1000};
- int i;
- for (i = 0; i < >
- {
- Beep(FREQUENCY[i], DELAY[i]);
- }
- }  >
小酒窝
[cpp] view plain copy print
- // 播放 小酒窝
-
#include
-
#include
- enum fy{
- d1 = 262,
- d1_ = 277,
- d2 = 294,
- d2_ = 311,
- d3 = 330,
- d4 = 349,
- d5 = 392,
- d5_= 415,
- d6 = 440,
- d6_= 466,
- d7 = 494,
- z1 = 523,
- z1_ = 554,
- z2 = 578,
- z2_ = 622,
- z3 = 659,
- z4 = 698,
- z4_ = 740,
- z5 = 784,
- z5_ = 831,
- z6 = 880,
- z6_ = 932,
- z7 = 988,
- g1 = 1046,
- g1_ = 1109,
- g2 = 1175,
- g2_ = 1245,
- g3 = 1318,
- g4 = 1397,
- g4_ = 1480,
- g5 = 1568,
- g5_ = 1661,
- g6 = 1760,
- g6_ = 1865,
- g7 = 1976,
- yaya = 0
- };
- struct yf
- {
- enum fy s;
- int t;
- };
- int main()
- {
- int n = 0;
- struct yf a[1000]={{z3,125},{z3,50},{z4,100},{z3,50},{z2,50}, //5
- {z2,125},{z2,50},{z5,100},{z2,50},{z1,50}, //10
- {z1,125},{z1,50},{z6,100},{z5,100}, //14
- {z3,125},{z4,25},{z3,25},{z2,100},{z2,100}, //19
- {z3,125},{z3,50},{z4,100},{z5,50},{z3,50}, //24
- {z5,125},{z5,50},{g2,100},{z7,50},{g1,50}, //29
- {g1,200},{g1,50},{z7,50},{z6,50},{z7,50}, //34
- {g1,125},{z7,50},{g1,200}, //37
- {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{z3,50},{z5,50}, //44
- {z5,250},{z6,50},{z7,50}, //47
- {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{g2,100},{g3,100}, //54
- {g3,300},{z6,50},{z7,50}, //57
- {g1,50},{z7,50},{g1,50},{z7,50},{g1,100},{g3,100}, //63
- {z7,50},{z6,50},{z7,50},{z6,50},{z7,50},{z5,50},{z5,50},{g1,50}, //71
- {g1,200},{g3,75},{g4,25},{g4,50},{g3,50}, //76
- {g2,200},{yaya,50},{z5,50},{g1,50},{g2,50}, //81
- {g3,50},{g1,50},{g1,50},{z5,50},{z5,100},{z5,50},{g3,50}, //88
- {g2,50},{g3,50},{g2,50},{g1,50},{z5,50},{z5,50},{z6,50},{z7,50}, //96
- {g1,50},{z6,50},{z6,50},{z3,50},{z3,100},{yaya,50},{z7,50}, //103
- {g1,50},{z7,50},{g1,50},{g2,50},{z6,50},{z5,50},{z5,100}, //110
- {z6,100},{z5,50},{z6,50},{z7,100},{g3,50},{g4,50}, //116
- {g3,50},{g4,50},{g3,50},{g2,50},{g2,50},{g1,100},{z5,50}, //123
- {z5,50},{z4,50},{z4,50},{g1,50},{g1,50},{g3,50},{g3,50},{g1,50}, //131
- {g2,200},{yaya,50},{z5,50},{g1,50},{g2,50}, //136
- {g3,50},{g1,50},{g1,50},{z5,50},{z5,100},{z5,50},{g3,50}, //143
- {g2,50},{g3,50},{g2,50},{g1,50},{z5,50},{z5,50},{z6,50},{z7,50}, //151
- {g1,50},{z6,50},{z6,50},{z3,50},{z3,100},{z3,50},{z7,50}, //158
- {g1,50},{z7,50},{g1,50},{g2,50},{z6,50},{z5,50},{z5,100}, //165
- {z6,50},{z7,50},{g1,50},{g2,100},{g3,50},{g4,50}, //171
- {g3,50},{g4,50},{g2,50},{g1,50},{g2,50},{g1,50},{g1,100}, //178
- {g2,50},{g1,50},{g2,50},{z6,50},{g1,100},{g2,50},{g1,50}, //185
- {g1,400}, //186
- {g2,50},{g1,50},{g2,50},{z6,50},{z7,100},{z7,50},{g1,50}, //193
- {g1,400}, //194
- };
- struct yf *atop;
- atop = a;
- n = 194;
- while(n–)
- {
- Beep(atop->s,atop->t*5);
- atop++;
- }
- return 0;
- }
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!