SUBMENU request C++ snipit to create a AddPopup(pSubMenu ) to Ribbion Panel

SUBMENU request C++ snipit to create a AddPopup(pSubMenu ) to Ribbion Panel

Braxton08
Contributor Contributor
528 Views
1 Reply
Message 1 of 2

SUBMENU request C++ snipit to create a AddPopup(pSubMenu ) to Ribbion Panel

Braxton08
Contributor
Contributor

////////////////////////////////////////////////////////////////////////////////////////////////////////////

// CPK Add popups here

 

// I'm trying to use AddButtonPopup in VC++, but I couldn't find any example code. The code below

// is converted from the sample given in visual basic, but I think the parameter obEnum, passed as

// const VARIANT &ObjectsEnumerator is not configured correctly. The VB code does this automatically.

// When I run this under the debugger it fails during the call to CreateObjectCollection.

// Can you point out what is wrong, or point me to sample code in VC++ that works?

/*CComPtr<ObjectCollection> pObCol;

VARIANT obEnum;

obEnum.vt=VT_DISPATCH;

 

//Create Collection object

VARIANT vopt;

VariantInit(&vopt);

V_VT(&vopt) = VT_ERROR;

vopt.scode = DISP_E_PARAMNOTFOUND;

 

 

hr = m_pApplication->TransientObjects->CreateObjectCollection(vopt,&pObCol);

if (FAILED(hr)) return hr;

CComPtr<ButtonDefinitionObject> pBut1;

hr=m_pCmd1->GetButtonDefinition(&pBut1);

if (FAILED(hr)) return hr;

hr=pObCol->Add(pBut1);

if (FAILED(hr)) return hr;

CComPtr<CommandControl> pPopup2DCtrl;

hr=pPartCustUIRibbonPanelCtrls->AddButtonPopup(pObCol, VARIANT_TRUE, VARIANT_TRUE,

CComBSTR(_T("Autodesk:ReverseEngineering:PopupPanel2D")), VARIANT_FALSE, &pPopup2DCtrl);

if (FAILED(hr)) return hr;

pPopup2DCtrl->DisplayedControl = pPopup2DCtrl->ControlDefinition;

 

*/ // Solution

//To create a popup menu it is necessary to start with CommandBar of kPopUpCommandBar type:

//UserInterfaceManager uiMgr = _application.UserInterfaceManager;

//m_pApplication->UserInterfaceManager;

 

0 Likes
529 Views
1 Reply
Reply (1)
Message 2 of 2

xiaodong_liang
Autodesk Support
Autodesk Support

Hi Braxton08 ,

 

I added some lines on the SDK sample <public documents>\Autodesk\Inventor 2015\SDK\DeveloperTools\Samples\VC++\AddIns\CustomUI, it works well. Hope it helps you to find the problem at your side.

 

CustomUIAddInServer.cpp: from line 364 - 406

 

		//ADN Test add  
			  CComPtr<TransientObjects> oTOs;
			  hr = m_pApplication->get_TransientObjects(&oTOs);
              ATLASSERT(SUCCEEDED(hr));	

			  CComPtr<ObjectCollection> pObCol;
			  CComVariant ObjectEnumerator;    
			  hr = oTOs->CreateObjectCollection(ObjectEnumerator,&pObCol);
              ATLASSERT(SUCCEEDED(hr));	
              

			  CComPtr<ButtonDefinitionObject> pBtnDef1;
			  hr = m_pCmd1->GetButtonDefinition(&pBtnDef1);
			  ATLASSERT(SUCCEEDED(hr)); 

			   CComPtr<ButtonDefinitionObject> pBtnDef2;
			  hr = m_pCmd2->GetButtonDefinition(&pBtnDef2);
			  ATLASSERT(SUCCEEDED(hr)); 

			   CComPtr<ButtonDefinitionObject> pBtnDef3;
			  hr = m_pCmd3->GetButtonDefinition(&pBtnDef3);
			  ATLASSERT(SUCCEEDED(hr)); 

			   CComPtr<ButtonDefinitionObject> pBtnDef4;
			  hr = m_pCmd4->GetButtonDefinition(&pBtnDef4);
			  ATLASSERT(SUCCEEDED(hr)); 

              hr=pObCol->Add(pBtnDef1);
			  ATLASSERT(SUCCEEDED(hr));	

			   hr=pObCol->Add(pBtnDef2);
			  ATLASSERT(SUCCEEDED(hr));

			   hr=pObCol->Add(pBtnDef3);
			  ATLASSERT(SUCCEEDED(hr));

			   hr=pObCol->Add(pBtnDef4);
			  ATLASSERT(SUCCEEDED(hr));

              
               CComPtr<CommandControl> pPopup2DCtrl;
               hr=pPartCustUIRibbonPanelCtrls->AddButtonPopup(pObCol, VARIANT_TRUE, VARIANT_TRUE,
                           CComBSTR(_T("")), VARIANT_FALSE, &pPopup2DCtrl);
			    ATLASSERT(SUCCEEDED(hr)); 
 
			//end ADN Test

 

 

 

aaa.jpg

 

 

0 Likes