2011-04-15 7 views
0

J'ai créé un MFC MDI à onglets avec l'application Feature Pack dans VS2008, à partir de l'assistant. Tout simplement la barre de menu ne restaure pas les états des boutons. J'ai aussi une barre d'outils qui sauvegarde son état.
J'ai vérifié, et CMFCMenuBar::SaveState et CMFCMenuBar::LoadState est appelée, mais seule la position de la barre de menu est correctement enregistrée. Quelqu'un at-il une idée de ce qui pourrait être la cause de cela?Pack Feature Pack MFC VS2008 - l'état du menu (CMFCMenuBar) n'est pas enregistré

J'ai également recherché le code source et je vous appelle exactement les mêmes choses que le VisualStudioDemo (qui n'enregistre l'ordre correct des boutons) .En CAppMainFrame::OnCreate Je fais ceci:

if (CMDIFrameWndEx::OnCreate(lpCreateStruct) == -1) 
    return -1; 

BOOL bNameValid; 
// set the visual manager and style based on persisted value 
OnApplicationLook(theApp.m_nAppLook); 

CMDITabInfo mdiTabParams; 
//FEATURE: SET the App user MDI tabs Look & Feeel 
mdiTabParams.m_style = CMFCTabCtrl::STYLE_3D; // other styles available... 
mdiTabParams.m_bActiveTabCloseButton = FALSE;  // set to FALSE to place close button at right of tab area 
mdiTabParams.m_bTabIcons = FALSE; // set to TRUE to enable document icons on MDI taba 
mdiTabParams.m_bAutoColor = FALSE; // set to FALSE to disable auto-coloring of MDI tabs 
mdiTabParams.m_bDocumentMenu = FALSE; // enable the document menu at the right edge of the tab area 


EnableMDITabbedGroups(TRUE, mdiTabParams); 
//EnableMDITabs (TRUE,FALSE,CMFCTabCtrl::LOCATION_TOP,FALSE,CMFCTabCtrl::STYLE_3D_ROUNDED); 

if (!m_wndMenuBar.Create(this)) 
{ 
    TRACE0("Failed to create menubar\n"); 
    return -1;  // fail to create 
} 

m_wndMenuBar.SetPaneStyle(m_wndMenuBar.GetPaneStyle() | CBRS_SIZE_DYNAMIC | CBRS_TOOLTIPS | CBRS_FLYBY); 

//FEATURE: prevent the menu bar from taking the focus on activation 
CMFCPopupMenu::SetForceMenuFocus(FALSE); 

if (!m_wndMainToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP | CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) || 
    !m_wndMainToolBar.LoadToolBar(theApp.m_bHiColorIcons ? IDR_MAINFRAME_256 : IDR_MAINFRAME)) 
{ 
    TRACE0("Failed to create toolbar\n"); 
    return -1;  // fail to create 
} 




CString strToolBarName; 
bNameValid = strToolBarName.LoadString(IDS_TOOLBAR_STANDARD); 
ASSERT(bNameValid); 
m_wndMainToolBar.SetWindowText(strToolBarName); 

CString strCustomize; 
bNameValid = strCustomize.LoadString(IDS_TOOLBAR_CUSTOMIZE); 
ASSERT(bNameValid); 
m_wndMainToolBar.EnableCustomizeButton(TRUE, ID_VIEW_CUSTOMIZE, strCustomize); 

//FEATURE: Allow user-defined toolbars operations: 
InitUserToolbars(NULL, uiFirstUserToolBarId, uiLastUserToolBarId); 


if (!m_wndStatusBar.Create(this)) 
{ 
    TRACE0("Failed to create status bar\n"); 
    return -1;  // fail to create 
} 



//FEATURE: status bar indicators 

m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT)); 
m_wndStatusBar.SetPaneStyle (1,SBPS_STRETCH); 

m_wndStatusBar.SetPaneStyle (m_wndStatusBar.CommandToIndex(ID_INDICATOR_PIXELS),SBPS_NORMAL); 
m_wndStatusBar.SetPaneStyle (m_wndStatusBar.CommandToIndex(ID_INDICATOR_DPI),SBPS_NORMAL); 
m_wndStatusBar.SetPaneStyle (m_wndStatusBar.CommandToIndex(ID_INDICATOR_ZOOM),SBPS_NORMAL); 

m_wndStatusBar.SetPaneText (m_wndStatusBar.CommandToIndex(ID_INDICATOR_PIXELS),m_strIndicatorPixels); 
m_wndStatusBar.SetPaneText (m_wndStatusBar.CommandToIndex(ID_INDICATOR_DPI),m_strIndicatorDPI); 
m_wndStatusBar.SetPaneText (m_wndStatusBar.CommandToIndex(ID_INDICATOR_ZOOM),m_strIndicatorZoom); 


m_ilStatusSaveAnimation.CreateTC(IDB_SAVE_ANIMATION,16,15,RGB(255,0,255)); 
SetIndicatorSave(FALSE); 

m_ilStatusBatchProcessing.CreateTC (IDB_PROCESSING_ANIMATION,16,15,RGB(255,0,255)); 
SetIndicatorBatchProcessing (FALSE); 

//FEATURE: Delete these five lines if you don't want the toolbar and menubar to be dockable 
m_wndMenuBar.EnableDocking(CBRS_ALIGN_ANY); 
m_wndMainToolBar.EnableDocking(CBRS_ALIGN_ANY); 
EnableDocking(CBRS_ALIGN_ANY); 
DockPane(&m_wndMenuBar); 
DockPane(&m_wndMainToolBar); 


//FEATURE: enable Visual Studio 2005 style docking window behavior 
CDockingManager::SetDockingMode(DT_SMART); 
//FEATURE: enable Visual Studio 2005 style docking window auto-hide behavior 
EnableAutoHidePanes(CBRS_ALIGN_ANY); 

// Create a caption bar: 
if (!CreateCaptionBar()) 
{ 
    TRACE0("Failed to create caption bar\n"); 
    return -1;  // fail to create 
} 

// Load menu item image (not placed on any standard toolbars): 
CMFCToolBar::AddToolBarForImageCollection(IDR_MENU_IMAGES, theApp.m_bHiColorIcons ? IDB_MENU_IMAGES_24 : 0); 

// create docking windows 
if (!CreateDockingWindows()) 
{ 
    TRACE0("Failed to create docking windows\n"); 
    return -1; 
} 

/* 
CDockablePane* pTabbedBar = NULL; 
m_wndFileView.EnableDocking(CBRS_ALIGN_ANY);  
DockPane(&m_wndFileView); 
//m_wndBatchView.AttachToTabWnd(&m_wndFileView, DM_SHOW, TRUE, &pTabbedBar); 
*/ 

//replaced with: 
m_wndBatchView.EnableDocking(CBRS_ALIGN_ANY); 
DockPane(&m_wndBatchView,AFX_IDW_DOCKBAR_LEFT); 


//FEATURE: Enable enhanced windows management dialog 
EnableWindowsDialog(ID_WINDOW_MANAGER, IDS_WINDOWS_MANAGER, TRUE); 

//FEATURE: Enable toolbar and docking window menu replacement 
EnablePaneMenu(TRUE, ID_VIEW_CUSTOMIZE, strCustomize, ID_VIEW_TOOLBAR); 

//FEATURE: enable quick (Alt+drag) toolbar customization 
CMFCToolBar::EnableQuickCustomization(); 

if (CMFCToolBar::GetUserImages() == NULL) 
{ 
    // load user-defined toolbar images 
    if (m_UserImages.Load(_T(".\\UserImages.bmp"))) 
    { 
     m_UserImages.SetImageSize(CSize(16, 16), FALSE); 
     CMFCToolBar::SetUserImages(&m_UserImages); 
    } 
} 

// enable menu personalization (most-recently used commands) 
// TODO: define your own basic commands, ensuring that each pulldown menu has at least one basic command. 
CList<UINT, UINT> lstBasicCommands; 
... 

Pouvez-vous savoir quel MFC Voodoo dois-je faire pour que cela fonctionne?

J'ai vraiment, vraiment besoin de résoudre ce problème.

Répondre

0
+1

Désolé, mais non, ce n'est pas le cas. J'utilise la barre d'outils standard et la barre de menu, je n'en fais pas une nouvelle. Tout ce qui tombe sur la barre de menu n'apparaît plus après le rechargement de l'application. La position de la barre de menus et de la barre d'outils est correcte, mais les boutons précédemment déplacés n'apparaissent plus. – Pifcnt