两个声音函数sound(),nosound()和延迟函数delay()由函数库
创新互联专注于峨边彝族网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供峨边彝族营销型网站建设,峨边彝族网站制作、峨边彝族网页设计、峨边彝族网站官网定制、微信平台小程序开发服务,打造峨边彝族网络公司原创品牌,更为您提供峨边彝族网站排名全网营销落地服务。
提供。
函数名:
sound
功
能:
以指定频率打开PC扬声器
用
法:
void
sound(unsigned
frequency);
程序例:
#include
int
main(void)
{
sound(7);
delay(10000);
nosound();
return
0;
}
可以使用PlaySound()函数播放mp3声音,该函数原型位于windows.h中,
函数原型为:
BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);
参数pszSound是指定了要播放声音的字符串,该参数可以是MP3文件的名字,或是MP3资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音。如果该参数为NULL则停止正在播放的声音。
参数hmod是应用程序的实例句柄,当播放MP3资源时要用到该参数,否则它必须为NULL。
参数fdwSound是标志的组合,各种可选的标志及意义如下所示。若成功则函数返回TRUE,否则返回FALSE。
播放标志以及含义:
SND_APPLICATION
用应用程序指定的关联来播放声音。
SND_ALIAS
pszSound参数指定了注册表或WIN.INI中的系统事件的别名。
SND_ALIAS_ID
pszSound参数指定了预定义的声音标识符。
SND_ASYNC
用异步方式播放声音,PlaySound函数在开始播放后立即返回。
SND_FILENAME
pszSound参数指定了MP3文件名。
SND_LOOP
重复播放声音,必须与SND_ASYNC标志一块使用。
SND_MEMORY
播放载入到内存中的声音,此时pszSound是指向声音数据的指针。
SND_NODEFAULT
不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音。
SND_NOSTOP
PlaySound不打断原来的声音播出并立即返回FALSE。
SND_NOWAIT
如果驱动程序正忙则函数就不播放声音并立即返回。
SND_PURGE
停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音。
SND_RESOURCE
pszSound参数是WAVE资源的标识符,这时要用到hmod参数。
SND_SYNC
同步播放声音,在播放完后PlaySound函数才返回。
************************************************************
例如我想播放在C:\WINDOWS\Media目录中的 Windows XP 启动.MP3文件
程序如下:
#include windows.h
#include stdlib.h
int main(int argc, char* argv[])
{
PlaySound("C:\\WINDOWS\\Media\\Windows XP 启动.MP3", NULL, SND_FILENAME | SND_ASYNC);
system("pause");
return 0;
}
*/:)))))))))))))))))))))))))))))))
函数:
voiddelay(uinti)
{
while(i)i--;
}
这样的延迟设计很不好,因为受影响的因素太多。
首先就是机器的CPU频率,快的CPU执行i--这句的机器时间短,慢的机器就很慢。
其次是当前机器的负荷情况,负荷较重时,系统给当前进程分配的CPU时间少,执行这些语句的机会就少,延迟就增加了。
影响因素还有很多在此不再列举。
做延迟程序主要有以下几种方法:
1.定时器法
用CWnd::SetTimer()函数设置定时器,当定时时间到时发送WM_TIMER消息触发CWnd::OnTimer()函数,重载它把自己的代码放进去。
SetTimer()参数为毫秒,此方法定时不高,受系统负荷影响。
2.休眠法
调用系统API函数Sleep(2000);参数单位是毫秒,2000代表2秒。
此方法主要收到当前系统负荷的影响,定时不太准确
3.时刻比较法
定义两个CTime变量,一个用于记录起始时刻,另一个放在循环体中不断刷新当前时刻,并减去起始时刻,自己计算是否到时间了。
此方法因CTime变量只能获取秒级的时刻,且收到系统负荷影响,精度也较低。
4.CPU滴答查询法
利用两个API函数QueryPerformanceFrequency()和QueryPerformanceCounter()分别获取CPU的频率和CPU滴答数,依时刻比较法自己计算时刻差值。
因为CPU滴答数是等于CPU的机器周期的,所以是Windows系统里最最精确的计时方法了。现在的CPU主频都是GHz级的,因此理论上计时精度可以到纳秒。
只要系统负荷不太重,此法可用于极其精确的延时程序。
因为Windows并不是实时操作系统,因此对于太过精确的计时,还是无能为力的。