使用BCGControlBar界面库时的预写注册表问题

 	使用BCGControlBar界面库时,发现菜单项居然修改不了了。上网搜索了一下,原来有这样一个问题:
BCG每次编译后,将界面信息写入了注册表,其中.rc记录第一次生成时的信息,之后再对界面进行修改将发现其无效!?
	解决方法1:将BCG在注册表中生成的项目下的setting文件夹删除。具体位置:HKEY_CURRENT_USER->software->
“应用程序生成向导”->具体的项目名->setting,其中“应用程序生成向导”是由xxApp::instance()中的
SetRegistryKey(_T("xx"))定义。
	这样就导致每需要一次修改就要删除一次注册表,颇有不便,于是就有解决方法2,在介绍解决方法2之前,先来讨论一下,
为什么BCGControlBar采取这种设计?有的朋友认为这是一个bug,或者是一个失败的设计。BCG的开发人员如此设计自有他们的用意,
就我的感觉,这样的设计是为了记录上次修改的结果,比如说悬停窗口,上次程序结束时是停靠,下次程序开始时还是停靠,这是对有效修改
的保护,这种修改是在程序运行后对界面的调整,比如工具栏的停靠位置,比如程序的风格,都会和上次程序结束时一样。但是,如果对源代
码进行修改,这种修改将无法被记录,删除注册表就成为了一个解决方法。
	再介绍另外一个解决方法。
	解决方法2:阻止BCG写入注册表,即在xxApp::Instance()中的SetRegistryKey()之上添加:m_bSaveState = false,
将这个成员设为FALSE,程序将不进行注册表的预写入。但使用这个方法的弊端是:程序运行后对界面的调整也无法记录的。折中一下,需要
写入注册表时,就将 m_bSaveState = false 注释掉吧。
	还有其它几种方法,都差不多,这里就不介绍了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值