WEB开发网
开发学院软件开发VC Web 版本检查以及为应用程序添加声音效果 阅读

Web 版本检查以及为应用程序添加声音效果

 2007-03-17 22:00:40 来源:WEB开发网   
核心提示: CSoundMgr::m_bUseResourceSounds = FALSE;CSoundMgr 的实现很简单,大多数代码都是在处理注册表的存取,Web 版本检查以及为应用程序添加声音效果(7),它也许是 Windows 编程中最繁琐的事情之一了(具体细节参见 Figure 6),好在我
CSoundMgr::m_bUseResourceSounds = FALSE;

CSoundMgr 的实现很简单。大多数代码都是在处理注册表的存取,它也许是 Windows 编程中最繁琐的事情之一了(具体细节参见 Figure 6)。好在我把很多繁琐的工作都完成了。每个逻辑声音的子键位于 HKCUAppEventsSchemesAppsprogname,此处 progname 是你的程序名,这个名字与程序“Settings”中使用的字符串名相同,也就是::AfxGetAppName 返回的值。 每个子键在 .current 中保存声音文件名。CSoundMgr 并不创建这个.current,它只建立空键,因为当用户改变声音时,控制面板中的声音配置程序创建 .current。每个逻辑声音键的缺省值是声音人类可读的 GUI 名,但据我所知 Windows 忽略这个值;它在一个别的键中查找 GUI 名:HKCUAppEventsEventNames。详情请见代码说明。

所以你得为每个逻辑声音名创建另外一组键,其缺省值是人类可读的 GUI 名。当然,如果你使用 CSoundMgr,就可以不用考虑这些注册表键。只要定义你的声音并调用 CSoundMgr::Register 即可。如果用户已经定义了声音,调用 Register 还不能生效,仅仅是创建那些还不存在的键。如果你想实现一个重置命令将声音恢复到其默认值,你应该删除 HKCUAppEventsSchemesAppsprogname,然后再次调用 Register。

最后是一个小小的建议:在选择你的逻辑名称时,要小心避免与其它应用程序冲突。糟糕的是所有事件名在 HKCUAppEventsEventNames 里的相同名字空间中,所以我建议使用前缀,就像我在例子 SoundTest 中所做的那样,逻辑名都以 ST_开始。这样也很容易找到,因为 REGEDT32 是按照字母顺序列出键名的。

SoundTest 有一个启用/屏蔽声音的复选框,用户可以用它关闭声音。这个按钮关联的命令处理例程与变量 CSoundMgr::m_bEnableSounds 绑定。具体细节参见代码。

编程愉快!

上一页  2 3 4 5 6 7 

Tags:Web 检查

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接