Win32 API中有个非常有意思的发音函数Beep(),可以用它在扬声器上播放简单的音调,如果按简谱来设置播放的内容,就可以模拟音乐的播放
- BOOL WINAPI Beep(
- __in DWORD dwFreq,
- __in DWORD dwDuration
- );
函数说明 第一个参数:频率,用Hz为单位,可以在0x25到0x7FFF之间。 第二个参数:持续的时间,单位[毫秒]。 与这个函数类似的是: 这个函数使用要广泛的多。相当多的程序在MessageBox()之前都会调用MessageBeep()来发出一些提示音(实际上是播放系统音乐文件)。 |
#include<iostream>
#include<windows.h>#include<conio.h>
using namespace std;
enum fy
{
d1 = 131, d1_ = 139, d2 = 147, d2_ = 156, d3 = 165, d4 = 175, d4_ = 185, d5 = 196,
d5_ = 208, d6 = 220, d6_ = 233, d7 = 247,
z1 = 262, z1_ = 277, z2 = 294, z2_ = 311, z3 = 330, z4 = 349, z4_ = 367, z5 = 392,
z5_ = 415, z6 = 440, z6_ = 466, z7 = 494,
g1 = 523, g1_ = 554, g2 = 578, g2_ = 622, g3 = 659, g4 = 698, g4_ = 740, g5 = 784,
g5_ = 831, g6 = 880, g6_ = 932, g7 = 988,
c1 = 1046,c1_ = 1109, c2 = 1175, c2_ = 1245, c3 = 1318, c4 = 1397, c4_ = 1480, c5 = 1568,
c5_ = 1661, c6 = 1760, c6_ = 1865, c7 = 1976, yaya = 0
};
struct yf
{
enum fy s;
int t;
};
int main()
{
int num;
while (true)
{
FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE));
switch (getch())
{
case 'z':
num = d1;
break;
case 'x':
num = d2;
break;
case 'c':
num = d3;
break;
case 'v':
num = d4;
break;
case 'b':
num = d5;
break;
case 'n':
num = d6;
break;
case 'm':
num = d7;
break;
case ',':
num = z1;
break;
case '.':
num = z2;
break;
case '/':
num = z3;
break;
case 'a':
num = z1;
break;
case 's':
num = z2;
break;
case 'd':
num = z3;
break;
case 'f':
num = z4;
break;
case 'g':
num = z5;
break;
case 'h':
num = z6;
break;
case 'j':
num = z7;
break;
case 'k':
num = g1;
break;
case 'l':
num = g2;
break;
case ';':
num = g3;
break;
case '\'':
num = g4;
break;
case 'q':
num = g1;
break;
case 'w':
num = g2;
break;
case 'e':
num = g3;
break;
case 'r':
num = g4;
break;
case 't':
num = g5;
break;
case 'y':
num = g6;
break;
case 'u':
num = g7;
break;
case 'i':
num = c1;
break;
case 'o':
num = c2;
break;
case 'p':
num = c3;
break;
case '[':
num = c4;
break;
case ']':
num = c5;
break;
case '\\':
num = c6;
break;
default:
num = yaya;
break;
}
Beep(num,500);
}
return 0;
}