CommandBars Articles and Tutorials

Add intelligent menus

Author: Kirk Stowell
Platform: Visual C++ MFC

The following is a tutorial on how to add intelligent menus to your application. This tutorial assumes that you have already created an application that uses Office style toolbars and menus. For a tutorial on how to create an application that uses Office style toolbars and menus, click here.

Create a simple MDI application using the MFC AppWizard:

  1. Add array of Ids that seem not very important for user.
     static UINT uHideCmds[] =
     {
         ID_FILE_PRINT, ID_FILE_PRINT_PREVIEW, ID_WINDOW_CASCADE
     };
    
  2. Add to the CMainFrame::OnCreate Intelligent menu initialization:
     // Hide array of commands
     pCommandBars->HideCommands(uHideCmds, _countof(uHideCmds));
    
    // Set "Always Show Full Menus" option to the FALSE
    XTP_COMMANDBARS_OPTIONS* pOptions = pCommandBars->
      GetCommandBarsOptions();
    pOptions->bAlwaysShowFullMenus = FALSE;
    
  3. Add the OnClose message handler to CMainFrame and add SaveCommandBars(_T("CommandBars")); before the call to the base class. This will save the user's used commands.
    int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
    {
        ...
    
            // Load the previous state for toolbars and menus.
            LoadCommandBars(_T("CommandBars"));
    
        return 0;
    }
    
  4. Add the OnClose message handler to CMainFrame and add SaveCommandBars(_T("CommandBars")); before the call to the base class. This will save the user's used commands.
    void CMainFrame::OnClose()
    {
        // Save the current state for toolbars and menus.
        SaveCommandBars(_T("CommandBars"));
        CMDIFrameWnd::OnClose();
    }
    

    Intelligent Menu