BCGCONTROLBAR控件的确很好用,界面很漂亮,但是有些东西用起来还是比较不爽,就比如CONTROLBAR的显示与否,显示位置等,默认情况下,相关信息都保存在注册表中,在下次程序启动时就读取注册表的值,对相关控件该显示的显示,该隐藏的隐藏,但是这也带来一些问题,有些CONTROLBAR我是想先创建但是不显示,在需要的时候再显示,这时候问题就来了,不管我怎么设置,他好像就根据注册表中的值来显示CONTROLBAR,也不知道他们是怎么设计的,对于不需要这种功能的人来说就比较麻烦了,今天终于找到一种方法来解决它,让他不保存到注册表中,步骤如下:
1。先删除注册表相关选项
位置在“HKEY_CURRENT_USER->software->“应用程序生成向导”->具体的项目名->setting,其中“应用程序生成向导”,
这个位置是在InitInstance的函数SetRegistryKey(_T("xx"))定义的。
2。函数SetRegistryKey(_T("xx"))前 增加一行代码,使其不保存
m_bSaveState = false
这样就能解决自定义CONTROLBAR的显示与否了,但是又带了副作用,所有的CONTROLBAR空间都不能记忆了,
每次打开程序界面都是初始状态,其实最好的方法是在调用注册表之后再用代码控制相关控件的显示与否,但是不知道
BCGCONTROLBAR的设计者将这个调用代码放到哪个函数里了,也懒得找了,希望有高人能找出来。
还是我自己来吧,如果要对部分CONTROLBAR的进行控制,可以重新生成一个类并继承该类,并在该类里面重载虚函数“loadstate”,在该函数里返回FALSE即可不加载
该类的状态了。