C++ Beep、MessageBox函数详解

本文介绍了C++中Windows.h头文件的两个实用函数:Beep和MessageBox。通过解析函数原型和数据类型,理解了Beep函数的频率和持续时间参数,并展示了如何使用这两个函数创建简单的音乐和弹窗效果。此外,还提到了MessageBox函数的参数及不同按钮类型的使用。
摘要由CSDN通过智能技术生成

PS:前几天,我看见有位C++大神编了个程序,里面有音乐,还能弹出窗口,我觉得好厉害呀!通过几天的研究,终于写出了这篇文章。

下面为正文(别说我抄别人的 ):

我们都知道,C++中有个头文件叫做:

Windows.h!!!

里面有着大量的,老师不会告诉你的 函数,比方说Beep函数。
Beep函数的原型为:

WINBASEAPI WINBOOL WINAPI Beep (DWORD dwFreq, DWORD dwDuration);

看懂了吗?dwFreq是频率(hz),dwDuration是持续时间(通常为400,也就是音乐中的1拍),可DWORD又是什么数据类型?我们还是打开utilapiset.h头文件吧!
在这个头文件里,我们能找到Beep的原型,按住Ctrl键,把鼠标移到“DWORD”上面,光标会变成一个手,点一下,我们就会打开minwindef.h头文件,里面有DWORD的原型:

typedef unsigned __LONG32 DWORD;

它的原型是__LONG32,这又是啥?我们同样按住Ctrl点击它,就能打开_mingw.h,我们会找到:

/* Target specific macro replacement for type "long".  In the Windows API,
   the type long is always 32 bit, even if the target is 64 bit (LLP64).
   On 64 bit Cygwin, the type long is 64 bit (LP64).  So, to get the right
   sized definitions and declarations, all usage of type long in the Windows
   headers have to be replaced by the below defined macro __LONG32. */
#ifndef __LP64__	/* 32 bit target, 64 bit Mingw target */
#define __LONG32 long
#else			/* 64 bit Cygwin target */
#define __LONG32 int
#endif

这里用到了ifndef预处理指令,就是说__LP64__没有被定义的话,就把__LONG32设为long,否则就把它设为int,说了一大堆 话,终于把DWORD给搞懂了。
下面是C++天空之城(抄别人的):


#include <cstdio>
#include <windows.h>
#define qdo 262 
#define qre 294
#define qmi 330     //q前缀为低音,1后缀为高音,s前缀为半音阶 
#define qfa 349
#define qso 392
#define qla 440
#define qsi 494
#define do 523
#define re 578
#define mi 659
#define fa 698
#define so 784
#define la 880
#define si 988
#define do1 1046
#define re1 1175
#define mi1 1318
#define fa1 1480
#define so1 1568
#define la1 1760
#define si1 1976
#define sqdo 277
#define sqre 311
#define sqfa 370
#define sqso 415
#define sqla 466
#define sdo 554
#define sre 622
#define sfa 740
#define sso 831
#define sla 932
#define sdo1 1046
#define sre1 1245
#define sfa1 1480
#define sso1 1661
#define sla1 1865
 
int main()
{
   
int pai=400,ban=200;
int ting=128;
 
Sleep(1000);
 
Beep(la,ban);
Beep(si,ban);
Sleep(ting);
 
Beep(do1,pai+ban);
Beep(si,ban);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
Beep(mi1,pai);
Sleep(ting);
 
Beep(si,3*pai);
Sleep(ting);
Beep(mi,ban);
Beep(mi,ban);
 
Beep(la,ban+pai);
Beep(so,ban);
Sleep(ting);
Beep(la,pai);
Sleep(ting);
Beep(do1,pai);
Sleep(ting);
 
Beep(so,2*pai);
Sleep(ting);
Sleep(pai);
Beep(mi,ban);
Sleep(ting/2);
Beep(mi,ban);
Sleep(ting/2);
 
Beep(fa,pai+ban);
Beep(mi,ban);
Sleep(ting);
Beep(fa,ban);
Beep(do1,ban+pai);
Sleep(ting);
 
Beep(mi,2*pai);
Sleep(ting);
Sleep(ban);
Beep(do1,ban);
Sleep(ting/2);
Beep(do1,ban);
Sleep(ting/2);
Beep(do1,ban);
Sleep(ting/2);
 
Beep(si,ban+pai);
Beep(sfa,ban);
Sleep(ting);
Beep(sfa,pai
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值