Click here to Skip to main content
15,068,929 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am creating MDI application. By default it uses by default toolbar resource IDR_MAINFRAME_256 and class
CMFCToolBar
.How to hide and show particular toolbar button. I require this functionality as there are different users with
different user rights are going to use this Software. Please anyone can tell me
How should I show or hide particular toolbar button.
I tried RemoveButton and InsertButton(gives error as cannot use private fuction)

I also tried

C++
TBBUTTONINFO inf;
    inf.cbSize=sizeof(inf);
    inf.dwMask=TBIF_STYLE;
    inf.fsStyle=BTNS_DROPDOWN | BTNS_AUTOSIZE ;
    m_wndToolBar.SendMessage(TB_HIDEBUTTON, ID_TESTVIEW, (LPARAM)&inf); 


but it does not work at all.
Can anyone tell me please how to go about it.
Posted

   
   
Comments
adityarao31 19-Sep-12 7:42am
   
My Friend I want to hide button in onc case,show it in another case.RemoveButton works fine,but InsertButton is private function so we cannot use it,So If I use this method how can I show Button again
I ran into the same problem. It seems that CMFCToolBar does not react on TB_HIDEBUTTON anymore. I think you have to use the visible style on the buttons, e.g.:

void HideButton(CMFCToolBar* pToolBar, int nID, bool bHide)
{ 
    //NOTE: TB_HIDEBUTTON does not work anymore

    const int nIndex = pToolBar->CommandToIndex(nID);

    if (nIndex != -1)
    {
        CMFCToolBarButton* pButton = pToolBar->GetButton(nIndex);
        
        if (pButton)
        {
            pButton->SetVisible(!bHide);

            pToolBar->AdjustSizeImmediate();
        }
    }
}
   

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900