keilc51 2006-8-31 16:50
请教:如何通过代码控制系统声音的开启和关闭?
我采用的代码片段如下:
UInt16 sysVolume;
sysVolume=PrefGetPreference(prefSysSoundVolume);//取得当前系统音量
PrefSetPreference(prefSysSoundVolume,0);//将系统音量设置为0,关系统声音
......//其它程序代码
PrefSetPreference(prefSysSoundVolume,sysVolume);//恢复原来的系统音量
但这段代码在运行中出现问题,如果将其放到sysAppLaunchCmdSystemReset运行码的处理段中,则在机器重启时可以达到关闭系统声音的目的,但却没象我设想的那样最后将系统声音恢复;如将其放到程序正常运行的地方,则根本不能关闭系统声音,现向高手请教一下,正确的控制系统声音开启和关闭的方式应该如何实现?
ecool 2006-8-31 18:43
设定声音还要用SndSetDefaultVolume();
PrefSetPreference(attr, volume);
SndSetDefaultVolume(NULL, &volume, NULL);
keilc51 2006-8-31 19:29
多谢版主的解答,确实如你所说,加上这一句便可以了。但在PalmOS API的帮助文件中,对SndSetDefaultVolume函数,有下面这样一句说明Compatibility:
Never call this function in Palm OS 5.这即是说对Palm OS 5及更新的版本,并不支持此函数,很让人费解。
keilc51 编辑于 2006-8-31 12:05:14
kaizenhi 2006-9-1 00:03
用这个来设置声音是不是所有声音都可以off掉,我看treo中设置声音分了很多类的(phone,calendar,messeger,etc).
keilc51 2006-9-1 16:56
这个只是用来关系统声音的,要对其它选项的声音进行操作,需使用不同的参数,详情请参见API帮助文件。