我在使用中发现xtreme toolkit界面的commandbar会自动保存上次使用软件时做的修改,而在代码中却没有反应出来。
导致我在想修改commandbar的时候总是达不到自己想要的结果,请问xtreme toolkit是怎么自动保存的啊?
怎样关掉这个功能?

解决方案 »

  1.   

    一般在CMainFrame::OnClose()调用SaveCommandBars就会保存状态,不调用应该就不会保存了
      

  2.   

    在CMainFrame::OnCreate中,创建完所有的control bar之后,调用LoadBarState(_T("YourAppName"));
    在CMainFrame::OnClose中,调用SaveBarState(_T("YourAppName"));第一次调用LoadBarState可能会报错,增加如下函数,LoadBarState之前先用此函数检查:
    BOOL CFrameWndEx::VerifyBarState(LPCTSTR lpszProfileName)
    {
        CDockState DockState;
        DockState.LoadState(lpszProfileName);

        for(int i=0; i<DockState.m_arrBarInfo.GetSize(); ++i)
        {
            CControlBarInfo* pBarInfo = (CControlBarInfo*)DockState.m_arrBarInfo[i];

            ASSERT(pBarInfo != NULL);

            int nDockedCount = pBarInfo->m_arrBarID.GetSize();
            if(nDockedCount > 0)
            {
                // dockbar
                for(int j=0; j<nDockedCount; ++j)
                {
                    UINT nID = (UINT) pBarInfo->m_arrBarID[j];
                    if(nID == 0)
    {
    continue; // row separator
    }
                    if(nID > 0xFFFF)
    {
                        nID &= 0xFFFF; // placeholder - get the ID
    }
                    if(GetControlBar(nID) == NULL)
    {
                        return FALSE;
    }
                }
            }
            
            if(!pBarInfo->m_bFloating) // floating dockbars can be created later
    {
    if(GetControlBar(pBarInfo->m_nBarID) == NULL)
    {
    return FALSE; // invalid bar ID
    }
    }
        }
        return TRUE;
    }