通过向导创建了一个MFC程序,在资源管理器下的menu界面手动添加了一个菜单项,比如说123,编译运行正常。
但是我在属性栏随便更改一个别的名字,比如说000,重新编译运行后显示的还是123。试了几次,改什么都不行。
在网上看见一个人也发了这样的问题,但是最后的解决方案不太懂,贴出他的问题和解决方案,请各位参考一下,看看是怎么回事?
摘录:::
用vc2010 随便弄一个有菜单的程序
然后使用资源管理器(在Menu那个树目录中)添加一个菜单,并加入对应的ID,编译运行,新添加的菜单正常显示
这个时候,我想更改一下新添加的菜单的名字
双击后打开属性,在caption栏中修改名字,编译运行,名字还是之前的那个名字!!
不知道大家是怎样解决这个问题的?使用VC6是正常的,是不是vc2010用了新的MFC类而导致这个问题呢?
求解答!!!
开来是没有人懂的了,就让我自己来解答吧!
其实是很简单的,既然我使用资源管理工具(或者直接在rc文件里面)更改了一个menu item 的名字,编译通过了的话,那是一定是修改成功的,那为什么显示的时候还是显示之前的数据呢?这肯定是在某一个地方keep住了之前保存的名字!!!
那么MFC会在哪里保存这个旧的东西,而且又会在程序中读取出来呢?
首先我在编译rc的目录下面找了一下,没有发现因为编译而产生出一个新的与rc有关系的东西(因为编译rc文件其实只会连接进exe|lib|dll文件中),所以这可能是会保存在注册表里面!!!!
果然,我打开注册表,找到对应我的软件的那个位置,里面有很多叫做MFCToolBar-XXX的东西,应该是这个了,删除之!!置于我为什么能够找到这里,这是因为再源码中是有记录会保存到注册表里面的!!
这个还得感谢我公司的大虾,帮我调试了一段时间然后找到的!!!
编译连接我的程序,运行!之前修改的东西能够正确显示了!!
问题就这样解决了!
额.不知道清理后,重新生成解决方案行不
试过了,不行呀
可以的,我用上述方法解决了
找到了解决方案上说的位置:
HK_CORRENT_USER-->SOFTWARE-->应用程序向导生成的本地应用程序-->项目
这个其实是由于VC2010使用了新的MFC库导致的。新的MFC库中加入的内容(包括ribbon)其实是从BCG中改写的,而使用BCG的程序在退出程序时就会在注册表中记录菜单、bar等的信息,所以会出现你说的现象。