Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. CToolBar disable/enable buttons

CToolBar disable/enable buttons

Scheduled Pinned Locked Moved C / C++ / MFC
comhelptutorial
15 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Mark Salsbery

    :doh: Well, anytime after a toolbar is created and the buttons are added to it, you can enable and diable buttons when you need to: // Disable a button m_ToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON1, FALSE); // Enable a button m_ToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON1, TRUE); Mark

    "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

    R Offline
    R Offline
    Romiks
    wrote on last edited by
    #6

    Mark, many thanks it works:), but button was not greyed :^).

    M 1 Reply Last reply
    0
    • R Romiks

      Mark, many thanks it works:), but button was not greyed :^).

      M Offline
      M Offline
      Mark Salsbery
      wrote on last edited by
      #7

      Romiks wrote:

      but button was not greyed

      Looking at the article, it looks like there's a separate image list for disabled. Are the images in that image list the same as the regular images? You could try omitting the last parameter in the call to LoadTrueColorToolBar() - the system should do its default "greying" for disabled buttons. Mark

      "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

      R 1 Reply Last reply
      0
      • M Mark Salsbery

        Romiks wrote:

        but button was not greyed

        Looking at the article, it looks like there's a separate image list for disabled. Are the images in that image list the same as the regular images? You could try omitting the last parameter in the call to LoadTrueColorToolBar() - the system should do its default "greying" for disabled buttons. Mark

        "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

        R Offline
        R Offline
        Romiks
        wrote on last edited by
        #8

        Mark, many thanks for help. I have tried to omit the last parameter, but it doesn't work :doh:. I will try to use CButton instead of tool bar.

        M 1 Reply Last reply
        0
        • R Romiks

          Mark, many thanks for help. I have tried to omit the last parameter, but it doesn't work :doh:. I will try to use CButton instead of tool bar.

          M Offline
          M Offline
          Mark Salsbery
          wrote on last edited by
          #9

          So the buttons diable but they don't look disabled? Mark

          "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

          R 1 Reply Last reply
          0
          • M Mark Salsbery

            So the buttons diable but they don't look disabled? Mark

            "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

            R Offline
            R Offline
            Romiks
            wrote on last edited by
            #10

            Hi Mark, If I ommited the last parameter, buttons are not disabled. :(

            M 2 Replies Last reply
            0
            • R Romiks

              Hi Mark, If I ommited the last parameter, buttons are not disabled. :(

              M Offline
              M Offline
              Mark Salsbery
              wrote on last edited by
              #11

              I just downloaded the source - I'll take a look. Mark

              "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

              1 Reply Last reply
              0
              • R Romiks

                Hi Mark, If I ommited the last parameter, buttons are not disabled. :(

                M Offline
                M Offline
                Mark Salsbery
                wrote on last edited by
                #12

                Ok.. It all works fine in the authors demo app. The author actually omits the last parametr in the call to CTrueColorToolBar::LoadTrueColorToolBar for the RIGHT toolbar. So, the right toolbar shows button bitmaps grayed by the system. For the left toolbar he uses special bitmaps for disabled buttons that don't have any color, just white/black/grays. All the buttons except the first three on left and right are disabled. If you try to disable them yourself they won't look any different :) To enable them, you can add command enablers. For example, there's 9 buttons on the toolbars. I enabled the 7th and 8th buttons like this (in MainFrm.cpp/.h):

                // In MainFrm.h

                // add these declarations to the CMainFrame class
                afx_msg void OnUpdateButton32777(CCmdUI* pCmdUI);
                afx_msg void OnUpdateButton32778(CCmdUI* pCmdUI);

                // In MainFrm.cpp

                // add this to CMainFrame message map
                ON_UPDATE_COMMAND_UI(ID_BUTTON32777, OnUpdateButton32777)
                ON_UPDATE_COMMAND_UI(ID_BUTTON32778, OnUpdateButton32778)

                // add these handler methods
                void CMainFrame::OnUpdateButton32777(CCmdUI* pCmdUI)
                {
                pCmdUI->Enable(TRUE);
                }

                void CMainFrame::OnUpdateButton32778(CCmdUI* pCmdUI)
                {
                pCmdUI->Enable(TRUE);
                }

                "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

                R 1 Reply Last reply
                0
                • M Mark Salsbery

                  Ok.. It all works fine in the authors demo app. The author actually omits the last parametr in the call to CTrueColorToolBar::LoadTrueColorToolBar for the RIGHT toolbar. So, the right toolbar shows button bitmaps grayed by the system. For the left toolbar he uses special bitmaps for disabled buttons that don't have any color, just white/black/grays. All the buttons except the first three on left and right are disabled. If you try to disable them yourself they won't look any different :) To enable them, you can add command enablers. For example, there's 9 buttons on the toolbars. I enabled the 7th and 8th buttons like this (in MainFrm.cpp/.h):

                  // In MainFrm.h

                  // add these declarations to the CMainFrame class
                  afx_msg void OnUpdateButton32777(CCmdUI* pCmdUI);
                  afx_msg void OnUpdateButton32778(CCmdUI* pCmdUI);

                  // In MainFrm.cpp

                  // add this to CMainFrame message map
                  ON_UPDATE_COMMAND_UI(ID_BUTTON32777, OnUpdateButton32777)
                  ON_UPDATE_COMMAND_UI(ID_BUTTON32778, OnUpdateButton32778)

                  // add these handler methods
                  void CMainFrame::OnUpdateButton32777(CCmdUI* pCmdUI)
                  {
                  pCmdUI->Enable(TRUE);
                  }

                  void CMainFrame::OnUpdateButton32778(CCmdUI* pCmdUI)
                  {
                  pCmdUI->Enable(TRUE);
                  }

                  "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

                  R Offline
                  R Offline
                  Romiks
                  wrote on last edited by
                  #13

                  Ok... I have dialog based MFC application ;) There is no ON_UPDATE_COMMAND_UI command :(

                  M 1 Reply Last reply
                  0
                  • R Romiks

                    Ok... I have dialog based MFC application ;) There is no ON_UPDATE_COMMAND_UI command :(

                    M Offline
                    M Offline
                    Mark Salsbery
                    wrote on last edited by
                    #14

                    Romiks wrote:

                    I have dialog based MFC application

                    Oh yeah, I forgot about that, sorry :-O Well I still go back to this: // Disable button ID_BUTTON32777 in m_ToolBar m_ToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON32777, FALSE); // Enable button ID_BUTTON32777 in m_ToolBar m_ToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON32777, TRUE); I'm not sure why that doesn't work for you - I just tested it in a dialog toolbar here. Mark

                    "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

                    R 1 Reply Last reply
                    0
                    • M Mark Salsbery

                      Romiks wrote:

                      I have dialog based MFC application

                      Oh yeah, I forgot about that, sorry :-O Well I still go back to this: // Disable button ID_BUTTON32777 in m_ToolBar m_ToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON32777, FALSE); // Enable button ID_BUTTON32777 in m_ToolBar m_ToolBar.GetToolBarCtrl().EnableButton(ID_BUTTON32777, TRUE); I'm not sure why that doesn't work for you - I just tested it in a dialog toolbar here. Mark

                      "Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder

                      R Offline
                      R Offline
                      Romiks
                      wrote on last edited by
                      #15

                      If you have working dialog based project, could you please send me? my mail:losqut@yandex.ru As for me, buttons are not greyed :(

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • World
                      • Users
                      • Groups