0

我创建了一个使用 CMFCToolBar 和 CMFCMenuBar 的 MFC 应用程序。它保存了它的第一次项目状态,当我更改或添加任何动态项目时,我仍然看到第一个状态删除的项目停留在那里添加的项目没有显示,然后我发现所有项目都在注册表中序列化并每次加载,我们所有的应用程序都从应用程序的模块中加载动态菜单项或工具栏按钮,除了以下解决方案外,我真的无法让它工作

class CToolBarEx : public CMFCToolBar
{
public:
    CToolBarEx()
    {
    }

    virtual BOOL LoadState(LPCTSTR /*lpszProfileName*/ = NULL, int /*nIndex*/ = -1, UINT /*uiID*/ = (UINT) -1)  {   return FALSE;   }
    virtual BOOL SaveState(LPCTSTR /*lpszProfileName*/ = NULL, int /*nIndex*/ = -1, UINT /*uiID*/ = (UINT) -1)  {   return FALSE;   }


};
class CMenuBarEx : public CMFCMenuBar
{
public:
    CToolBarEx()
    {
    }

    virtual BOOL LoadState(LPCTSTR /*lpszProfileName*/ = NULL, int /*nIndex*/ = -1, UINT /*uiID*/ = (UINT) -1)  {   return FALSE;   }
    virtual BOOL SaveState(LPCTSTR /*lpszProfileName*/ = NULL, int /*nIndex*/ = -1, UINT /*uiID*/ = (UINT) -1)  {   return FALSE;   }


};

这是我可以用来向工具栏或菜单栏添加动态项目的唯一方法,但这不是解决方案,我没有利用自定义工具并保存菜单栏位置,这是微软希望人们如何处理带有菜单和工具栏?推送一次并且不允许更改?或者我错过了什么?

4

1 回答 1

0

不幸的是,这就是它的工作方式,因为 Microsoft 从 BCG 工具包派生了它的 CMFC 类。我们在我们的应用程序中遇到了同样的问题,并通过从大型机类更新工作空间(例如工具栏、菜单项等)来解决它。此外,我们选择将状态保存在 XML 文件中。

于 2014-02-18T13:10:46.690 回答