|  | ||
|  |  |  | 
|  | ||
|  |  | 
  |  |  | 
| 
 |  | How to verify the bar state infoby Cristi Posea The ProblemIf you use  Why? Because in the  Well, since you are a MFC veteran, you already know how to fix this:
 What about this? - You already shipped to billions of customers the CoolApp 1.0 with 2 toolbars. Now it's time for an upgrade - you will deliver CoolApp 2.0, which has only one big toolbar, or you changed the toolbar IDs. The new version will crash on a billion computers because of old profile settings, and you get a billion calls for tech support. Uh-oh! But I have this supper install package which verifies the existing profile or builds a brand new one, you'll say. Congratulations, and keep up the good work! This article is not for you, but you may read it anyway. The Solution1. Create a new member function in  
    BOOL VerifyBarState(LPCTSTR lpszProfileName);
2. Add the function body to  
BOOL CMainFrame::VerifyBarState(LPCTSTR lpszProfileName)
{
    CDockState state;
    state.LoadState(lpszProfileName);
    for (int i = 0; i < state.m_arrBarInfo.GetSize(); i++)
    {
        CControlBarInfo* pInfo = (CControlBarInfo*)state.m_arrBarInfo[i];
        ASSERT(pInfo != NULL);
        int nDockedCount = pInfo->m_arrBarID.GetSize();
        if (nDockedCount > 0)
        {
            // dockbar
            for (int j = 0; j < nDockedCount; j++)
            {
                UINT nID = (UINT) pInfo->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 (!pInfo->m_bFloating) // floating dockbars can be created later
            if (GetControlBar(pInfo->m_nBarID) == NULL)
                return FALSE; // invalid bar ID
    }
    return TRUE;
}
3. Finally, change the  
    if (VerifyBarState(_T("MyApp")))
        LoadBarState(_T("MyApp"));
Optionally, you can add an  Have fun! Copyright © 1998-2019 DataMekanix. All rights reserved.
 |  |  | 
|  |  |  | |