Search code examples
c++sdk3dsmax

Disable/Enable quad menu item using 3ds max sdk


I have added a menu item to the quad menu. how can I disable and enable this menu?

IQuadMenuContext* pContext = (IQuadMenuContext*) GetCOREInterface()->GetMenuManager()->GetContext(kViewportQuad);
IMenu *pMenuInQuadMenu = NULL;
IQuadMenu *pQuadMenu = pContext->GetMenu(0);
pMenuInQuadMenu = pQuadMenu->GetMenu(0);

IMenuItem* pNewMenuItem = GetIMenuItem();
pNewMenuItem->SetActionItem( pAction );
pNewMenuItem->SetUseCustomTitle(true);
pNewMenuItem->SetTitle(L"Menu Item");
pMenuInQuadMenu->AddItem( pNewMenuItem,0 );

Solution

  • In your derived class of ActionItem, you can implement your own IsEnabled method as required. For Example:

    class MenuActionItem : public ActionItem
    {
        BOOL IsEnabled()
        {
            return ( some_condition ) ? true : false ;
        }
    }
    

    This method will be called each time when you try to open a quad menu. So you can enable or disable your menu item here.