VS2008和VS2010再次修改菜单栏修改无效

 

某些时候,在运行已经写好的菜单栏后,再次对菜单栏进行修改,并运行时发现,菜单栏没有改变。还保存着上一次的结果

解决办法:

在工程的APP类中,在ExitInstance()函数里,


C/C++ code

int CXCApp::ExitInstance()
{

    //...........
    this->CleanState();
    return CWinAppEx::ExitInstance();
}

 

添加 this->CleanState();

就可以了

这时,再次运行后,点击关闭,再次运行即可。

这是因为:VS2008和VS2010整合了BCG的界面后出现的BUG,原来的界面数据被保存到注册表里,修改后无效。

CWinAppEx::CleanState的作用(MSDN):Removes all the information about the application from the Windows registry.从窗口注册表中移除所有关于应用程序的信息。
   有时在BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)中重新设置窗口尺寸大小时:例如cs.cx=1000; cs.cy=600;但发现窗口尺寸并没有发生变化。这是就需要在void C***App::PreLoadState()函数起始位置添加代码:CleanState(_T("WorkSpace"));重新运行程序,发现窗口尺寸改变。再者:在资源修改了菜单名之后编译运行,结果却发现与没有修改之前的没有任何区别。菜单项的名字还是没有改过来。这是也要添加上述代码。

原因:程序在运行之后将运行信息写进注册表,而程序在退出的时候没有清理掉这些信息,从而导致了在以后程序运行时依然调用前面注册表里边留下的信息去完成界面的初始化以及更新等工作。而我们应该需要的是让程序在运行的时候调用我们最新的配置或者修改信息,而不是以前的信息。
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值