
 tvNode = m_treeOPCServerBrowse.Nodes.Add(OPCItemElements[i].szName); 
else 
 tvNode = ParentNode.Nodes.Add(OPCItemElements[i].szName); 
  
tvNode.Tag = OPCItemElements[i].szItemID; 
  } 
 
pBrowse.Browse(szItemName, ref ContinuationPoint, 0,  
tagOPCBROWSEFILTER.OPC_BROWSE_FILTER_BRANCHES, "", "",  
1,1,0,uiProp,out bMoreElements, out dwCount, out pElements); 
            
tagOPCBROWSEELEMENT[] OPCBranchElements = new 
tagOPCBROWSEELEMENT[dwCount]; 
         
for (int i = 0; i < dwCount; i++) 
{ 
 OPCBranchElements[i]=(tagOPCBROWSEELEMENT)Marshal.PtrToStructure(  
pBrowseElements + i * sz, typeof(tagOPCBROWSEELEMENT)); 
 
if (null == ParentNode) 
 tvNode = m_treeOPCServerBrowse.Nodes.Add(OPCBranchElements[i].szName); 
else 
 tvNode = ParentNode.Nodes.Add(OPCBranchElements[i].szName); 
 
DisplayChildren(tvNode, OPCBranchElements[i].szName, pBrowse); 
  }             
 } 
 
С вызовом функции Browse могут возникнуть проблемы, описанные в 
предыдущем разделе, которые решаются редактированием библиотеки 
opcprox.dll утилитами  ilDAsm и ilDAsm. 
 
Результат работы приведен на рисунке 27