PlaySound、sndPlaySound和MessageBeep
时间:2010-10-16 来源:houbangen
PlaySound
BOOL PlaySound( // 播放波形声音
LPCSTR pszSound,
HMODULE hmod,
DWORD fdwSound
);
参数:
pszSound
指定要播放的声音。该参数可以是:
WAVE文件的名字,
或是WAV资源名称,
或是内存中指向声音数据的指针,
或是在系统注册表WIN.INI中定义的系统事件声音。
如果该参数设为NULL,则停止正在播放的声音。
hmod
指定WAV资源所在的模块实例句柄。当fdwSound参数指定了SND_RESOURCE标志时,该参数必须指定;否则必须设置为NULL。
fdwSound
指定声音播放标志,可以是下列值的组合:
SND_RESOURCE |
pszSound参数是WAVE资源的标识符,这时要用到hmod参数。 |
SND_ALIAS |
pszSound参数指定注册表或WIN.INI中的系统事件的别名。 |
SND_ALIAS_ID |
pszSound参数指定预定义的声音标识符。 |
SND_FILENAME |
pszSound参数指定WAVE文件名。 |
SND_MEMORY |
播放载入到内存中的声音,此时pszSound是指向声音数据的指针。 |
|
|
SND_NODEFAULT |
不播放缺省声音。若无此标志,则PlaySound在没找到声音时会播放缺省声音。 |
SND_ASYNC |
用异步方式播放声音,PlaySound函数在开始播放后立即返回。 |
SND_SYNC |
同步播放声音,在播放完后PlaySound函数才返回。 |
SND_LOOP |
重复播放声音,必须与SND_ASYNC标志一块使用。 |
SND_PURGE |
停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音;否则,停止pszSound指定的声音。 |
|
|
SND_NOSTOP |
PlaySound不打断原来的声音播出并立即返回FALSE。 |
SND_APPLICATION |
用应用程序指定的关联来播放声音。 |
SND_NOWAIT |
如果驱动程序正忙,则函数就不播放声音并立即返回。 |
返回值:
若成功则函数返回TRUE;
否则返回FALSE。
在C:\WINDOWS\MEDIA目录下存放有系统的WAV、MID声音
例子:
第一种方法是:直接播出声音文件,相应的代码为:
PlaySound("c:\\WINDOWS\\MEDIA\\The Microsoft Sound.wav", NULL, SND_FILENAME | SND_ASYNC);
第二种方法是:把声音文件加入到资源中,然后从资源中播放声音。假定声音资源的ID为IDR_STARTWIN,则下面的调用同样会输出启动声音:
PlaySound((LPCTSTR)IDR_STARTWIN, AfxGetInstanceHandle(), SND_RESOURCE | SND_ASYNC);
第三种方法是:用PlaySound播放系统声音,Windows启动的声音是由SystemStart定义的系统声音,因此可以用下面的方法播放启动声音:
PlaySound("SystemStart",NULL,SND_ALIAS|SND_ASYNC);
sndPlaySound
BOOL sndPlaySound(// 与PlaySound类似,但少了hmod参数。
LPCSTR lpszSound,
UINT fuSound
);
参数:
lpszSound
除了不能指定资源名字外,该参数与PlaySound的是一样的;
fuSound
指定播放声音的标志。可以是SND_ASYNC、SND_LOOP、SND_MEMORY、SND_NODEFAULT、SND_NOSTOP和SND_SYNC的组合,这些标志的含义与PlaySound的一样。
附注:
该函数不能直接播放声音资源。
要用该函数播放WAVE文件,可按下面的方式调用:sndPlaySound(“MYSOUND.WAV”,SND_ASYNC);
MessageBeep
BOOL MessageBeep( UINT uType ); // 播放指定类型的波形声音
参数:
uType
指定声音类型,as identified by an entry in the [sounds] section of the registry. 为下列值之一:
0xFFFFFFFF |
SystemDefault(从机器的扬声器中发出蜂鸣声) |
MB_OK |
SystemDefault(播放由SystemDefault定义的声音) |
MB_ICONASTERISK |
SystemAsterisk(播放由SystemAsterisk定义的声音) |
MB_ICONEXCLAMATION |
SystemExclamation(播放由SystemExclamation定义的声音) |
MB_ICONHAND |
SystemHand(播放由SystemHand定义的声音) |
MB_ICONQUESTION |
SystemQuestion(播放由SystemQuestion定义的声音) |
附注:
After queuing the sound, the MessageBeep function returns control to the calling function and plays the sound asynchronously
If it cannot play the specified alert sound, MessageBeep attempts to play the system default sound. If it cannot play the system default sound, the function produces a standard beep sound through the computer speaker.
The user can disable the warning beep by using the Sound Control Panel application.