问题描述:手动修改MFC中目标菜单栏对应ID的名称,重新生成后不起作用,仍然是修改前的名字
网上有三种方法,我全都尝试了一下,只有最后一种生效了,在此全贴出来:
1.手动清理MFC的注册表信息
因为程序编译后会保存在注册表里面
打开注册表,里面有很多叫做MFCToolBar-XXX的东西(可以通过Ctrl+f搜索),删除掉,重新编译MFC项目。
参考链接:https://developer.aliyun.com/article/604846
此方法我通过Ctrl+f搜索,只找到了其他软件的MFCToolBar内容,没有找到VS对应的信息,所以没能成功
2.在ExitInstance()中调用函数自动清理注册表信息
在项目中找到ExitInstance()函数,在其return前添加 this->CleanState();
截图如下:

参考链接:https://blog.csdn.net/qq_23195213/article/details/65634575
此方法我添加后重新生成整个项目没有变化,暂无法确定原因
3.在InitInstance()中调用函数自动清理注册表信息
在项目中找到InitInstance()函数,在其return前添加 CleanState(_T("WorkSpace"));
截图如下(为了方便截图我把InitInstance中其他代码都删掉了):

参考链接:网友IamVeryCool的评论
重新生成再次运行菜单栏成功修改!
本文介绍了在MFC应用中修改菜单栏ID后无法生效的问题及其解决方案。尝试了三种方法,包括手动清理注册表信息、在ExitInstance()中添加CleanState()以及在InitInstance()中调用CleanState()。最终发现只有在InitInstance()中调用CleanState()能成功更新菜单栏名称。这个问题可能与MFC项目的注册表缓存有关。

951

被折叠的 条评论
为什么被折叠?



