PlaySound、sndPlaySound和MessageBeep

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.

作者: houbangen   发布时间: 2010-10-16