AnsweredAssumed Answered

How to add a treeview Activex control to PropertyManagerPage with C++

Question asked by 克 争 孙 on Apr 9, 2016

Hi guys.

I want to display a treeview control in  my user defined properymanagerpage, but it didnot work.I  created project used the Solidworks com non-attributed addin wizard.

I #import "D:\Program Files\SolidWorks Corp\SOLIDWORKS\sldutils\TreeView.ocx" no_namespace, named_guids, auto_search

and add

HRESULT hres = S_FALSE;

  hres = swPropertyPage->IAddControl(TREEVIEW1, swControlType_ActiveX, caption, swControlAlign_LeftEdge, options, tip, &control);

  control->QueryInterface(__uuidof(IPropertyManagerPageActiveX), (void**)&activex);

  if (activex != NULL)

  {

  VARIANT_BOOL vbRtn = VARIANT_FALSE;

  activex->SetClass(L"33CD4BA8-65CB-4333-AFCC-C761E9295BF5", L"", &vbRtn);

  activex->put_Height(100);

  }

in CUserPropertyManagerPage::AddControls method

I called

void CUserPropertyManagerPage::SetActiveControl(){

  if (activex != NULL)

  {

  CComPtr<IUnknown> pUnknown;

  HRESULT rtn = S_OK;

  rtn = activex->IGetControl(&pUnknown);

  CComQIPtr<ITreeView> treeView;

  treeView = pUnknown;

  //pDispatch->QueryInterface();

  if (treeView != NULL)

  {

  AfxMessageBox(L"Get TreeView success");

  }

  }

}

after the CUserPropertyManagerPage::Show

 

the pUnknown always be NULL

Outcomes