VS2010菜單修改不了問題

VC2008或VC2010整合了BCG的那一套界面之後,出現了一個新的Bug:
    在資源修改了菜單名之後編譯運行,結果卻發現與沒有修改之前的沒有任何區別。菜單項的名字還是沒有改過來。現象如下圖:

圖1 RC中已經將原來的File項改變爲“Project”

圖2 運行的時候仍然顯示原來的“File”

造成這種現象的原因:
    程序在運行之後將運行信息寫進註冊表,而程序在退出的時候沒有清理掉這些信息,從而導致了在以後程序運行時依然調用前面註冊表裏邊留下的信息去完成界面的初始化以及更新等工作。而我們應該需要的是讓程序在運行的時候調用我們最新的配置或者修改信息,而不是以前的信息。

解決方法:
    找到CxxxApp類的成員函數ExitInstance(),在調用基類(CWinAppEx)的ExitInstance()函數之前先調用一次CleanState()函數。如:

點擊(此處)摺疊或打開

  1. int CProjectExplorerV10App::ExitInstance()
  2. {
  3.     //TODO: handle additional resources you may have added
  4.     AfxOleTerm(FALSE);
  5.     this->CleanState();                //add by cz
  6.     return CWinAppEx::ExitInstance();
  7. }

CleanState函數的作用:從Windows註冊表移除了有關應用程序的所有信息
    這樣在以後程序每次退出的時候都先清理掉註冊表裏邊的所有有關該程序的信息。下次再運行的時候就不會有舊信息“干擾”的問題出現了。

本文選自:http://blog.chinaunix.net/uid-26729065-id-3338577.html

發佈了5 篇原創文章 · 獲贊 9 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章