56
ImageSize property on 32 (specifies the size of the control' icons)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutImageSize(32);
spXMLGrid1->GetFont()->PutSize(_variant_t(long(16)));
spXMLGrid1->PutNodeHeight(32);
spXMLGrid1->PutLevelWidth(-1,spXMLGrid1->GetImageSize());
spXMLGrid1->Images(_bstr_t("gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOq") +
"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");
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <b>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
			var_Node1->PutValue("<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1");
			var_Node1->PutSelected(VARIANT_TRUE);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodePtr var_Node2 = spXMLGrid1->GetNodes()->Add(L"Parent <b>2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node2->GetNodes();
		var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);
spXMLGrid1->PutExpandBarVisible(VARIANT_TRUE);
spXMLGrid1->PutExpandButtons(EXMLGRIDLib::exCustom);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_FALSE,1);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_TRUE,2);
spXMLGrid1->EndUpdate();

55
ImageSize property on 16 (specifies the size of the control' icons)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutImageSize(16);
spXMLGrid1->Images(_bstr_t("gBJJgBAIDAAEg4ACEKAD/hz/EMNh8TIRNGwAjEZAEXjAojJAjMLjABAAgjUYkUnlUrlktl0vmExmUzmk1m03nE5nU7nkrQCAntBoVDolFo1HoM/ADAplLptImdMYFOq") +
"dSqlXq1QrVbrlGpVWsFNrNdnNjsk7pQAtNroFnt0sh8Yr9iulTuNxs1Eu8OiT/vsnsNVutXlk/oGGtVKxGLxWNtsZtN8iUYuNvy0Zvd+xNYwdwvl4p870GCqc8vOeuVt" +
"tmp1knyOayWVy+WzN/ze1wOElenm+12WUz/Bv2/3UyyWrzeutux2GSyGP2dQ33C1ur3GD3M4zUNzHdlWjq/E3nGzVpjWv4HA7fRy/Tv2IrN8rPW6nZ3ve7mUlfu20Z8a" +
"cvQyb+vY9jasYoDwMm+LytVBDqKG3z8O3Cb8P+mkAuY9cCQ2uL4KaxDKvkp8RNLEjqugnrwQo/UWPzFyeQw5sNLZFENrI4kOqU66pw8uzmOKvTqNqjULJvGL1JO48GtT" +
"GsbLdEL3scxLlyiw8dQeoUVxdLTtyKmUjwGlslRPJsnK1HbAKbKCrsQo8uQk/CeP44iaR/ATnTNPLvyxPU+z9P9AUDQVBowiofJXQ6Oo+kKMpIkjztE4TKn4P6JowfgP" +
"nwD5/nAjB8AOeAPo0eAA1IAFH07UhAIMpYAVIYFHqBUhwVjV1S1EtQAHxW65V0AZwAeuQAnwB5gAPYViEDVhwAHTQBkCjB4gOhwDmCyhH0sACAg==");
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <b>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
			var_Node1->PutValue("<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1");
			var_Node1->PutSelected(VARIANT_TRUE);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodePtr var_Node2 = spXMLGrid1->GetNodes()->Add(L"Parent <b>2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node2->GetNodes();
		var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);
spXMLGrid1->PutExpandBarVisible(VARIANT_TRUE);
spXMLGrid1->PutExpandButtons(EXMLGRIDLib::exCustom);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_FALSE,1);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_TRUE,2);
spXMLGrid1->EndUpdate();

54
How can I create a new node with attribute, something like <newnode attr1='at1'/>

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->Images(_bstr_t("gBJJgBAICAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf+Pt2RrmazF3zlez+duGhsGk0Vp01i" +
"1On0GV1dU1ev1lf2VWymX2e53W73m9327iw+lfCj0gkUkAEllHKnG13j/cHQjb/eHU6b4f74jbwOncjbAB3gjaAB/k8flB8oA4A9cb9ftjXv9Xs+fwAHk80a/HpjTAD7" +
"/O2P54D+jaAg=");
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"newnode",vtMissing,vtMissing);
	var_Node->PutImage(1);
	var_Node->GetNodes()->Add(L"attr1","at1",vtMissing)->PutImage(2);
spXMLGrid1->ExpandAll();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'MSXML2' for the library: 'Microsoft XML, v3.0'

	#import <msxml3.dll>
*/
MSXML2::IXMLDOMDocument2Ptr d = ::CreateObject(L"MSXML.DOMDocument");
spXMLGrid1->SaveXML(d);
OutputDebugStringW( d->Getxml() );

53
Is it possible to load the XML with a different version of XML DOM
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'MSXML2' for the library: 'Microsoft XML, v3.0'

	#import <msxml3.dll>
*/
MSXML2::IXMLDOMDocument2Ptr d = ::CreateObject(L"Msxml2.DOMDocument.3.0");
	d->loadXML(L"<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>");
spXMLGrid1->LoadXML(d);
spXMLGrid1->ExpandAll();

52
Is there a way to define a default Editor which is assigned to each node when the string is loaded (method 2)

// SelectionChanged event - Fires when the user changes the selection.
void OnSelectionChangedXMLGrid1()
{
	// SelectedNode(0).Editor = "edit"
}

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->GetEditors()->Add("edit",EXMLGRIDLib::EditType);
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	var_Node->PutPicture("pic1");
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
		var_Nodes->Add(L"Child <b>3",vtMissing,vtMissing)->PutValue(long(103));
	var_Node->PutExpanded(VARIANT_TRUE);

51
How can I specify a default editor

// AddNode event - Occurs when a node is added to the nodes collection.
void OnAddNodeXMLGrid1(LPDISPATCH   NewNode)
{
	// NewNode.Editor = "calc"
}

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->GetEditors()->Add("calc",EXMLGRIDLib::CalculatorType);
spXMLGrid1->LoadXML("<numbers><first_number>100</first_number><second_number>200</second_number></numbers>");
spXMLGrid1->ExpandAll();

50
Is there a way to define a default Editor which is assigned to each node when the string is loaded (method 1)

// AddNode event - Occurs when a node is added to the nodes collection.
void OnAddNodeXMLGrid1(LPDISPATCH   NewNode)
{
	// NewNode.Editor = "edit"
}

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->PutSelForeColorChild(RGB(128,128,128));
spXMLGrid1->GetEditors()->Add("edit",EXMLGRIDLib::EditType);
spXMLGrid1->LoadXML("http://www.exontrol.net/testing.xml");
spXMLGrid1->ExpandAll();

49
How can I assign editors to nodes

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
EXMLGRIDLib::IEditorsPtr var_Editors = spXMLGrid1->GetEditors();
	EXMLGRIDLib::IEditorPtr var_Editor = var_Editors->Add("name",EXMLGRIDLib::EditType);
		var_Editor->PutAppearance(EXMLGRIDLib::EtchedApp);
	EXMLGRIDLib::IEditorPtr var_Editor1 = var_Editors->Add("phone",EXMLGRIDLib::MaskType);
		var_Editor1->PutMask(L"(###)-######");
		var_Editor1->PutAppearance(EXMLGRIDLib::EtchedApp);
	EXMLGRIDLib::IEditorPtr var_Editor2 = var_Editors->Add("date",EXMLGRIDLib::DateType);
		var_Editor2->PutAppearance(EXMLGRIDLib::EtchedApp);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Customer",vtMissing,vtMissing);
	var_Node->PutPicture("mihai");
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Name","Mihai Filimon",vtMissing)->PutEditor("name");
		var_Nodes->Add(L"Phone","(0744)-845287",vtMissing)->PutEditor("phone");
		var_Nodes->Add(L"BirthDay",COleDateTime(1971,12,31,0,00,00).operator DATE(),vtMissing)->PutEditor("date");
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutLevelWidth(0,82);
spXMLGrid1->EndUpdate();

48
I use LoadXml, then inside onNodeAdd event, I add the picture. But the picture doesnt show up. Does the picture have to be a bitmap

// AddNode event - Occurs when a node is added to the nodes collection.
void OnAddNodeXMLGrid1(LPDISPATCH   NewNode)
{
	// NewNode.Picture = LoadPicture("c:\exontrol\images\colorize.gif")
}

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
		var_Nodes->Add(L"Child <b>3",vtMissing,vtMissing)->PutValue(long(103));
	var_Node->PutExpanded(VARIANT_TRUE);

47
How can I assign a picture to a node ( method 3 )

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->PutHTMLPicture(L"pic1","c:\\exontrol\\images\\zipdisk.gif");
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	var_Node->PutPicture("pic1");
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
		var_Nodes->Add(L"Child <b>3",vtMissing,vtMissing)->PutValue(long(103));
	var_Node->PutExpanded(VARIANT_TRUE);

46
How can I save the control's content using a different version of XML DOM
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'MSXML2' for the library: 'Microsoft XML, v3.0'

	#import <msxml3.dll>
*/
MSXML2::IXMLDOMDocument2Ptr d = ::CreateObject(L"Msxml2.DOMDocument.3.0");
spXMLGrid1->LoadXML("<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>");
spXMLGrid1->SaveXML(d);
OutputDebugStringW( d->Getxml() );
spXMLGrid1->ExpandAll();

45
How can I load the control's content using a different version of XML DOM
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'MSXML2' for the library: 'Microsoft XML, v3.0'

	#import <msxml3.dll>
*/
MSXML2::IXMLDOMDocument2Ptr d = ::CreateObject(L"Msxml2.DOMDocument.3.0");
	d->Putasync(VARIANT_FALSE);
	d->loadXML(L"<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>");
spXMLGrid1->LoadXML(d);
spXMLGrid1->ExpandAll();

44
How can I get the XML string from the control's content
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'MSXML2' for the library: 'Microsoft XML, v3.0'

	#import <msxml3.dll>
*/
MSXML2::IXMLDOMDocument2Ptr d = ::CreateObject(L"MSXML.DOMDocument");
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Root",vtMissing,vtMissing);
	var_Node->PutImage(1);
	EXMLGRIDLib::INodePtr var_Node1 = var_Node->GetNodes()->Add(L"Child1",vtMissing,vtMissing);
		var_Node1->PutImage(2);
		var_Node1->PutValue("Value <b>1");
	EXMLGRIDLib::INodePtr var_Node2 = var_Node->GetNodes()->Add(L"Child2",vtMissing,vtMissing);
		var_Node2->PutImage(2);
		var_Node2->PutValue("Value <b>2");
spXMLGrid1->ExpandAll();
spXMLGrid1->ResizeToFit(long(0),vtMissing);
spXMLGrid1->SaveXML(d);
OutputDebugStringW( d->Getxml() );

43
How can I load the control from a XML DOM object

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'MSXML2' for the library: 'Microsoft XML, v3.0'

	#import <msxml3.dll>
*/
MSXML2::IXMLDOMDocument2Ptr d = ::CreateObject(L"Msxml2.DOMDocument.3.0");
	d->appendChild(d->createElement(L"Root"));
	MSXML2::IXMLDOMNamedNodeMapPtr var_IXMLDOMNamedNodeMap = ((MSXML2::IXMLDOMElementPtr)(d->GetchildNodes()->Getitem(0)))->Getattributes();
		var_IXMLDOMNamedNodeMap->setNamedItem(d->createAttribute(L"Item-1"));
		((MSXML2::IXMLDOMAttributePtr)(var_IXMLDOMNamedNodeMap->Getitem(0)))->Putvalue("value <b>1");
		var_IXMLDOMNamedNodeMap->setNamedItem(d->createAttribute(L"Item-2"));
		((MSXML2::IXMLDOMAttributePtr)(var_IXMLDOMNamedNodeMap->Getitem(1)))->Putvalue("value <b>2");
spXMLGrid1->LoadXML(d);
spXMLGrid1->ExpandAll();
spXMLGrid1->ResizeToFit(long(0),vtMissing);
OutputDebugStringW( d->Getxml() );

42
How can I load XML from http or URL

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->LoadXML("http://www.exontrol.net/testing.xml");
spXMLGrid1->ExpandAll();

41
How can I load XML from a supplied string

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->LoadXML("<customer><first_name>Joe</first_name><last_name>Smith</last_name></customer>");
spXMLGrid1->ExpandAll();

40
How do I programatically search for a node
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
spXMLGrid1->GetNodes()->Add(L"Parent 3",vtMissing,vtMissing);
spXMLGrid1->GetSearch(L"Child 1",long(-1))->PutSelected(VARIANT_TRUE);

39
How can I show the control's selection using your EBN technology

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
EXMLGRIDLib::IAppearancePtr var_Appearance = spXMLGrid1->GetVisualAppearance();
	var_Appearance->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAChABUgIg6AADACAxRDQNABQKAAzQFAYaBiG6GAAGIYxWgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjAIoBQSGYZAIkGY4ah2A42RhNETyH") +
"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");
	var_Appearance->Add(2,_bstr_t("gBFLBCJwBAEHhEJAEGg4BFIDg6AADACAxRDAMgBQKAAzQFAYahsGCGAAGIYxUgmFgAQhFcZQSKUOQTDKMIziYBYfgkMIgSbJUgDGAkRRdDSOYDmGQYDiCIoRShOMIjH") +
"LUXxtDaIZwhEAoJb+RgAUY/cTzaAEUwHHiTKInaCQGhsCYJUJAdRURQ9EwvCIZBpEWwLChENQwWLCNj2TScBwjCyqbale45ViqdoDU8lORLUi+M4zSBPcZVTRtGShPDB" +
"KTjMKKYgkG4lVpRNa0PC1GTzQ6mazkKQLRADDIDVbAeL3LiMBy9LyLLItSIrFqqaJma7ccgRDj4AY7Ua+czufBZbozOqDYzAey7TDWLRXFDNIzzTgQAyHHrETbHGqzFx" +
"MAEa5YGqYpVj2HwzDuQ5oHKIQgggSRAlIYw6B0ThGFGDIAFUDAhBMfZRiGNAkFECZnG4IQdneJwmnsSQrGAAhWAIJBJBIQgFCQIBiEIAglgqYo0i4V4MEgRI9gSToYFS" +
"b4Fk6Y4+BmBZhFOJgTC8TBogQAArgqco4muCZOkOMJtgmYpIjYKg7GKE4uCUK4AAKKg2DwI4DiCZw5k6KJ2D6D4OHiag4DwIxiiQAArAqMosnEPBPAOIhOg+DozjIJ4P" +
"GSY4iEwPAkhKLhHUUSQsnKFCnkYU9MjORhcCsAAIACLQ8iaSJ6FKC5jJoaobA8KYoACCRKnmMJzhuDpZnSboMCKGJ4nMPIPDmYAACwKIDk6CoLCeU40m6I5oliMoKDya" +
"ICokLIpgoThviOKJoGYf4KmUKhMjMLJLCAAojCyaYoiYGoGmqM46CkOwPEoKonAACxKlSdItmiWBeBeDgrioNo3D0KxSlAAAtgsUpYnUPRPEoco8hCa+T40SxbBRj5tE" +
"sHJ1i6JhbGYS4ug8awelQLZAAKZI5C4DxrhYQ9ehmUppWiA48nAPRuFKYpiAAC47laZQ9iuKZSgOPotkuFI7C6C4gACPJAm8eQOhOQZoikDp3kCS5AACPoEk8fBGnqQg" +
"pDOSppD2TxjlyPZD6CfwekQTx5lKP5ImseZTCAL5MAMhZKEwA5jC6SIyEqfh0kuD4MjAAAwcwBw0iKDwjlKVozmyChPDSThyiMDxGk6awbB6XY1iwfQInkPg0GMEAADE" +
"dRDmcVovm8ex3FkPJrH0WJ5w4UAAkcMYMHOaxmjGTxNGcao1jWbYMkcAAMk2RJ7lycxMgMdpEHMTZMnuXBM7uMAOAG1jAED8HAQ47wGjDHgPwEI+RggcGOAmAAqxDj8D" +
"oHMTY3BUi7GWPOCAKg3jIBOEIXggBAEBA");
spXMLGrid1->PutShowFocusRect(VARIANT_FALSE);
spXMLGrid1->PutSelBackColor(0x1000000);
spXMLGrid1->PutSelForeColor(-1);
spXMLGrid1->PutSelBackColorCollapse(0x2000000);
spXMLGrid1->PutSelBackColorChild(-1);
spXMLGrid1->PutSelForeColorChild(-1);
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
	var_Node->PutExpanded(VARIANT_TRUE);
	var_Node->PutSelected(VARIANT_TRUE);
EXMLGRIDLib::INodePtr var_Node1 = spXMLGrid1->GetNodes()->Add(L"Parent 3",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
		var_Nodes1->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(103));
		var_Nodes1->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(104));
spXMLGrid1->GetNodes()->Add(L"Parent 4",vtMissing,vtMissing);
spXMLGrid1->EndUpdate();
spXMLGrid1->PutLevelWidth(0,96);

38
Is it possible to assing a picture to a node (method 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutHTMLPicture(L"pic1","c:\\exontrol\\images\\zipdisk.gif");
spXMLGrid1->PutAlignChildContent(VARIANT_TRUE);
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
spXMLGrid1->PutSelBackMode(EXMLGRIDLib::exTransparent);
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
	var_Node->PutBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState,L"left[18],client[text=`<img>pic1</img>`,align=0x20]");
	var_Node->PutExpanded(VARIANT_TRUE);
EXMLGRIDLib::INodePtr var_Node1 = spXMLGrid1->GetNodes()->Add(L"Parent 3",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
		var_Nodes1->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(103));
		var_Nodes1->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(104));
	var_Node1->PutBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState,L"left[18],client[text=`<img>pic1</img>`,align=0x20]");
	var_Node1->PutBackgroundExt(EXMLGRIDLib::exCollapseBackgroundExtState,L"right[4],client[text=`<img>pic1:19</img>`,align=0x12]");
spXMLGrid1->GetNodes()->Add(L"Parent 4",vtMissing,vtMissing);
spXMLGrid1->EndUpdate();
spXMLGrid1->PutLevelWidth(0,96);

37
Is it possible to assing a picture to a node (method 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutHTMLPicture(L"pic1","c:\\exontrol\\images\\zipdisk.gif");
spXMLGrid1->PutAlignChildContent(VARIANT_TRUE);
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
spXMLGrid1->PutSelBackMode(EXMLGRIDLib::exTransparent);
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	var_Node->PutPicture(((IDispatch*)(spXMLGrid1->GetHTMLPicture(L"pic1"))));
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
		var_Nodes->Add(L"Child <b>3",vtMissing,vtMissing)->PutValue(long(103));
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->GetNodes()->Add(L"Parent 3",vtMissing,vtMissing);
spXMLGrid1->EndUpdate();

36
I get "The key already exists" when adding a new node. What can I do ( method 2 )
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
EXMLGRIDLib::INodesPtr var_Nodes = spXMLGrid1->GetNodes();
	var_Nodes->Add(L"Item",vtMissing,"Key1");
	var_Nodes->Add(L"Item",vtMissing,"Key2");
	var_Nodes->Add(L"Item",vtMissing,"Key3");
spXMLGrid1->EndUpdate();

35
I get "The key already exists" when adding a new node. What can I do ( method 1 )
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
EXMLGRIDLib::INodesPtr var_Nodes = spXMLGrid1->GetNodes();
	var_Nodes->Add(L"Item",vtMissing,vtMissing);
	var_Nodes->Add(L"Item",vtMissing,vtMissing);
	var_Nodes->Add(L"Item",vtMissing,vtMissing);
spXMLGrid1->EndUpdate();

34
How can I mark the node only, without its child

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutAlignChildContent(VARIANT_TRUE);
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
spXMLGrid1->PutSelBackMode(EXMLGRIDLib::exTransparent);
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
	var_Node->PutBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState,L"top[20,frame=RGB(0,0,0),framethick]");
	var_Node->PutBackgroundExt(EXMLGRIDLib::exCollapseBackgroundExtState,var_Node->GetBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState));
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->GetNodes()->Add(L"Parent 3",vtMissing,vtMissing);
spXMLGrid1->EndUpdate();

33
How can I mark the entire node

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutAlignChildContent(VARIANT_TRUE);
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
spXMLGrid1->PutSelBackMode(EXMLGRIDLib::exTransparent);
spXMLGrid1->GetNodes()->Add(L"Parent 1",vtMissing,vtMissing);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent 2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
	var_Node->PutBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState,L"[frame=RGB(0,0,0),framethick]");
	var_Node->PutBackgroundExt(EXMLGRIDLib::exCollapseBackgroundExtState,var_Node->GetBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState));
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->GetNodes()->Add(L"Parent 3",vtMissing,vtMissing);
spXMLGrid1->EndUpdate();

32
How can I specify aditional information for a node, when it is expanded

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutAlignChildContent(VARIANT_TRUE);
spXMLGrid1->PutSelBackMode(EXMLGRIDLib::exTransparent);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing);
			var_Node1->PutValue(long(100));
			var_Node1->PutBackgroundExt(EXMLGRIDLib::exCollapseBackgroundExtState,L"top[2],bottom[2],left[2],right[2],client[pattern=6,frame]");
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
	var_Node->PutBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState,L"top[4],bottom[4],left[17],right[4],client[text=`<font ;6><fgcolor A0A0A0>Count: 2`,align=0x20]");
	var_Node->PutBackgroundExt(EXMLGRIDLib::exCollapseBackgroundExtState,L"top[4],bottom[4],left[4],right[4],client[text=`<font ;6><fgcolor A0A0A0>Count: 2`,align=0x02]");
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->ResizeToFit(long(0),vtMissing);
spXMLGrid1->EndUpdate();

31
Is it possible to show aditional information for a node

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutAlignChildContent(VARIANT_TRUE);
spXMLGrid1->PutSelBackMode(EXMLGRIDLib::exTransparent);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(102));
	var_Node->PutBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState,L"top[4],bottom[4],left[4],right[4],client[text=`<font ;6><fgcolor A0A0A0>Count: 2`,align=0x02]");
	var_Node->PutBackgroundExt(EXMLGRIDLib::exCollapseBackgroundExtState,var_Node->GetBackgroundExt(EXMLGRIDLib::exExpandBackgroundExtState));
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->ResizeToFit(long(0),vtMissing);
spXMLGrid1->EndUpdate();

30
How can I hide the expanding bars under each parent node (method 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutBackground(EXMLGRIDLib::exExpandButtonUp,-1);
spXMLGrid1->PutBackground(EXMLGRIDLib::exExpandButtonDown,-1);
spXMLGrid1->PutAlignChildContent(VARIANT_TRUE);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing);
			EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
				var_Nodes1->Add(L"Sub Child <b>2.1",vtMissing,vtMissing)->PutValue(long(101));
				EXMLGRIDLib::INodePtr var_Node2 = var_Nodes1->Add(L"Sub Child <b>2.2",vtMissing,vtMissing);
					EXMLGRIDLib::INodesPtr var_Nodes2 = var_Node2->GetNodes();
						var_Nodes2->Add(L"Sub Child <b>2.1.1",vtMissing,vtMissing)->PutValue(long(101));
						var_Nodes2->Add(L"Sub Child <b>2.2.2",vtMissing,vtMissing)->PutValue(long(102));
					var_Node2->PutExpanded(VARIANT_FALSE);
			var_Node1->PutExpanded(VARIANT_TRUE);
	var_Node->PutSelected(VARIANT_TRUE);
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutLevelWidth(0,64);
spXMLGrid1->PutLevelWidth(1,96);
spXMLGrid1->PutLevelWidth(2,96);
spXMLGrid1->EndUpdate();

29
How can I align the child nodes

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->PutAlignChildContent(VARIANT_TRUE);
EXMLGRIDLib::INodesPtr var_Nodes = spXMLGrid1->GetNodes();
	var_Nodes->Add(L"Parent A",vtMissing,vtMissing)->PutValue(long(100));
	EXMLGRIDLib::INodePtr var_Node = var_Nodes->Add(L"Parent B",vtMissing,vtMissing);
		EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node->GetNodes();
			var_Nodes1->Add(L"Child<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(101));
			var_Nodes1->Add(L"Child<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(102));
			EXMLGRIDLib::INodePtr var_Node1 = var_Nodes1->Add(L"Child<font ;6><off -4><b>3",vtMissing,vtMissing);
				EXMLGRIDLib::INodesPtr var_Nodes2 = var_Node1->GetNodes();
					var_Nodes2->Add(L"Node<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(103));
					var_Nodes2->Add(L"Node<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(104));
		var_Node->PutExpanded(VARIANT_TRUE);
		var_Node->PutSelected(VARIANT_TRUE);

28
How do I change the control's visual appearance using the UI Visual Designer
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
spXMLGrid1->PutShowFocusRect(VARIANT_FALSE);
spXMLGrid1->PutGridLinesColor(RGB(128,128,128));
EXMLGRIDLib::INodesPtr var_Nodes = spXMLGrid1->GetNodes();
	EXMLGRIDLib::INodePtr var_Node = var_Nodes->Add(L"Parent A",vtMissing,vtMissing);
		EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node->GetNodes();
			var_Nodes1->Add(L"Child<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(100));
			var_Nodes1->Add(L"Child<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(101));
			EXMLGRIDLib::INodePtr var_Node1 = var_Nodes1->Add(L"Child<font ;6><off -4><b>3",vtMissing,vtMissing);
				EXMLGRIDLib::INodesPtr var_Nodes2 = var_Node1->GetNodes();
					var_Nodes2->Add(L"Node<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(102));
					var_Nodes2->Add(L"Node<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(103));
		var_Node->PutExpanded(VARIANT_TRUE);
		var_Node->PutSelected(VARIANT_TRUE);
	var_Nodes->Add(L"Parent B",vtMissing,vtMissing)->GetNodes()->Add(L"1",vtMissing,vtMissing);
spXMLGrid1->PutLevelWidth(0,96);
spXMLGrid1->PutVisualDesign(_bstr_t("gBFLBWIgBAEHhEJAEGg6oBUHSTNAgAA8IZ7/jEZf78jUZicKAYOhULB8jAQxhEaGUjAkfhcICIgg4vAUHgRCJ0MkcInQBC01ACAADACAxRDAMgBQKAAzQFAYahmG6GA") +
"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");
spXMLGrid1->EndUpdate();

27
How do I specify to search for name of the nodes only, when the user filters the control

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutFilterBarPromptVisible(EXMLGRIDLib::exFilterBarVisible);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(101));
		EXMLGRIDLib::INodesPtr var_Nodes1 = var_Nodes->Add(L"Child<font ;6><off -4><b>3",vtMissing,vtMissing)->GetNodes();
			var_Nodes1->Add(L"Node<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(102));
			var_Nodes1->Add(L"Node<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(103));
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutAutoSearch(EXMLGRIDLib::exContains);
spXMLGrid1->PutFilterBarPromptType(EXMLGRIDLib::FilterPromptEnum(EXMLGRIDLib::exFilterPromptApplyOnName | EXMLGRIDLib::exFilterPromptStartWith));
spXMLGrid1->PutFilterBarPromptPattern(L"No");
spXMLGrid1->EndUpdate();

26
Is it possible to include child-nodes, when do filtering

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutFilterBarPromptVisible(EXMLGRIDLib::exFilterBarVisible);
spXMLGrid1->PutHideSelection(EXMLGRIDLib::exHideAlways);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(101));
		EXMLGRIDLib::INodesPtr var_Nodes1 = var_Nodes->Add(L"Child<font ;6><off -4><b>3",vtMissing,vtMissing)->GetNodes();
			var_Nodes1->Add(L"Node<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(102));
			var_Nodes1->Add(L"Node<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(103));
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutAutoSearch(EXMLGRIDLib::exAnyContains);
spXMLGrid1->PutFilterBarPromptType(EXMLGRIDLib::FilterPromptEnum(EXMLGRIDLib::exFilterPromptIncludeChild | EXMLGRIDLib::exFilterPromptApplyOnValue | EXMLGRIDLib::exFilterPromptApplyOnName | EXMLGRIDLib::exFilterPromptContainsAny));
spXMLGrid1->PutFilterBarPromptPattern(L"Child3");
spXMLGrid1->EndUpdate();

25
How can I change the control's filtering so it searches for Contains rather than Start

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutFilterBarPromptVisible(EXMLGRIDLib::exFilterBarVisible);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(101));
		EXMLGRIDLib::INodesPtr var_Nodes1 = var_Nodes->Add(L"Child<font ;6><off -4><b>3",vtMissing,vtMissing)->GetNodes();
			var_Nodes1->Add(L"Node<font ;6><off -4><b>1",vtMissing,vtMissing)->PutValue(long(102));
			var_Nodes1->Add(L"Node<font ;6><off -4><b>2",vtMissing,vtMissing)->PutValue(long(103));
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutAutoSearch(EXMLGRIDLib::exAnyContains);
spXMLGrid1->PutFilterBarPromptType(EXMLGRIDLib::FilterPromptEnum(EXMLGRIDLib::exFilterPromptApplyOnValue | EXMLGRIDLib::exFilterPromptApplyOnName | EXMLGRIDLib::exFilterPromptContainsAny));
spXMLGrid1->PutFilterBarPromptPattern(L"Child3");
spXMLGrid1->EndUpdate();

24
How do I enable the control's filtering support

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutFilterBarPromptVisible(EXMLGRIDLib::exFilterBarVisible);
spXMLGrid1->PutHideSelection(EXMLGRIDLib::exHideAlways);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(101));
		var_Nodes->Add(L"Child <b>3",vtMissing,vtMissing)->PutValue(long(102));
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->EndUpdate();

23
How can I hide the expanding bars under each parent node (method 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAChABDEMACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzX") +
"IUBxAAqXZZFUaKAgOMJDTLBAzUTCUKx7HynQACCCaTpGVo8hYhEoDJKMdB1HIZIwyBBcqBNWTFdLAAJFKTdKAMIyiGp4DbudjyXg6V5OTblez9P7AMBvS6nKrhcp2Prh" +
"TSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaJnaC5aiuCT7VRjWDYFgFdTpQC8bZuGz7Trmd59XTadhYHSsAyNRDCL6tayLDxSZabZ5aOa6HoOS4" +
"kjGY4vnQeAEBaCYOkQYYslYCpvA+D5FmSc55j0PhfF8eYHlwQZ2nQTImDsFRaioVB9j8Hx/k+c53n4fogAeTJFHuXY3HCTAygyAociMKBKEKBIeCiCZyHYEAnCEOBUh+" +
"BQhBgNIegKCgYBySAgh2SAUgINAMmMNIgCcCYjn4KoKmKSI2C6CpiHIagkDMYgCAoIg1A0IxEhsJgJFiPg+g+Y4yFYOA0GMWIIloNhNGIaIXCUI5CE4SwkEkchOFCFIl" +
"BkThQCUCQZDYSglCQcxaEUX5IBmBJhDeDZZDYOwlgmQhghaGZmkmKhnhoZo5ioTYYk2WYEgEYAnGOGJlDkCQyECDqfCkNoCCUSQ6A6BYhCgCZ0g6HoOEmWR9GFYw4m0O" +
"wIlIJIHCRc4shGJhpjoaocieaZiC6GAimkUgehIOwnGYEYGGiah6jaE4rg6SpCjKK5rEOMYjGGGIChKOgglmdoij6L5aEYfo6CkGIEAQgIA==");
spXMLGrid1->GetVisualAppearance()->Add(2,_bstr_t("gBFLBCJwBAEHhEJAAChABC0MACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzX") +
"IUBxAAqXZZFUaKAgOMJDTLBAzUTCUKx7HynQACCCaTpGVo8hYhEoDJKMdB1HIZIwyBBcqBNWTFdLAAJFKTdKAMIyiGp4DbudjyXg6V5OTblez9P7AMBvS6nKrhcp2Prh" +
"TSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaJnaC5aiuCT7VRjWDYFgFdTpQC8bZuGz7Trmd59XTadhYHSsAyNRDCL6tayLDxSZabZ5aOa6HoOS4" +
"kjGY4vnQeAEBaCYOkQYYslYCpvA+D5FmQf56D0PhPF+G5Fl4YZ3BAfY9BMKYOkUVoqhUH4PleZ53mkehfjgBZ9H4XxTBWcR2l2QwwkoMgKHKDIhCkCgSHiIgnkmWBMhw" +
"f5egglInGEAh6A0KBgiMIICHdLIIlAM4MlKAIcCaIYIjYLoLGKIhqCcMxiR8JQ1A0IxEhsJgJFiPg+guI4yFYOA0GMWIUloNhNGIaIXCUI5CE4SwkEkchMhGCxlBkQIU" +
"CQZJZCiFIRk0aQVH8IBmAOBJeDcZJYmyFgnAmAhaGaCxmGmIhqhoZJZgiXYYAgFgCHQOYOFOEITCQCJpCyEoTVUNoACUZJiFCEoekiaZgmSHQXlYEh0DuDpTjCDQiEgc" +
"hAg0IpJBoXoZiYKYqHaHAimkYguhMIZpAOMh0GEGBmg6JYqmkGowmyK4rAqNoyDsGg2BmCApCuAgNh8agrkqdYkGea4ChGCBAEAgI");
spXMLGrid1->GetVisualAppearance()->Add(3,_bstr_t("gBFLBCJwBAEHhEJAAChABa8GACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIzkKJpAAiCRQGiYZyHKcxMYgQrAZBEbKMLwrAYUIRCCaof") +
"AAGIaRDIcZPXQjZSMdSkHRpKi6Mo2TpPUpSDpUM6VCL3KhqKxXeq1cp2XpfWBYNhVbTafyyaiqKiSWy0EQRBSDXBcNxXHalazhNpCbTSWoqLrhRzDMCwC6rUwCeYJQzC" +
"cLxLCcMwjA5/MDeFLXCwjBJ+W5aFhzBYsbx1NKcZ7nWgaAqOKp/OKnECuBh2EYNMywK5rew7BqTf5tW7ZNx2TYNMYPKiDajcDJMOwqWpUVDjOQ4fidXzfSbPcrxfBsLp" +
"/FOKhmDKGQKHUGoFEiIRPCiE5pl8ChzhuNpyHgU49mSdxtEOWBkCCNRdGQExBhyTRQCcExeG+X5zneeAmh8Uw1nEIIfDMUJSDQSYyGCFR/GCR5yAkJRgGMRgDHyTYjGS" +
"VgmgkchSAoJJhhIRIXCSSQXm4H4HgkQhGBuBgJEgVJWgSVJSAYLg4E2Yx2BuAhJGIcIYCWIxHm4NINiOCJeBuDANliOIBFOJAjhiZQ5AkMhAg6BhJCgbgbH6ZJiFYHAl" +
"AkKQkg6EYOEkCRLFTQw4m0OwIlIJIHCRVAshGGRmHmGhohqZoiC4ZAimYEgeF4OwkCUSRUFwZw5mYX4eg6SZyH6HpoAOMRxFUFRihKBgglaVZagqIpXCWNoGCkFRkAQg" +
"I");
spXMLGrid1->PutHideSelection(EXMLGRIDLib::exHideAlways);
spXMLGrid1->PutExpandButtons(EXMLGRIDLib::exCustom);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_TRUE,16777216);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_FALSE,33554432);
spXMLGrid1->PutBackground(EXMLGRIDLib::exExpandButtonUp,0x3000000);
spXMLGrid1->PutBackground(EXMLGRIDLib::exExpandButtonDown,0x3000000);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing);
			EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
				var_Nodes1->Add(L"Sub Child <b>2.1",vtMissing,vtMissing)->PutValue(long(101));
				EXMLGRIDLib::INodePtr var_Node2 = var_Nodes1->Add(L"Sub Child <b>2.2",vtMissing,vtMissing);
					EXMLGRIDLib::INodesPtr var_Nodes2 = var_Node2->GetNodes();
						var_Nodes2->Add(L"Sub Child <b>2.1.1",vtMissing,vtMissing)->PutValue(long(101));
						var_Nodes2->Add(L"Sub Child <b>2.2.2",vtMissing,vtMissing)->PutValue(long(102));
					var_Node2->PutExpanded(VARIANT_FALSE);
			var_Node1->PutExpanded(VARIANT_TRUE);
	var_Node->PutSelected(VARIANT_TRUE);
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutLevelWidth(0,64);
spXMLGrid1->PutLevelWidth(1,96);
spXMLGrid1->PutLevelWidth(2,96);
spXMLGrid1->EndUpdate();

22
How can I change the visual appearance for expand/collapse buttons

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAChABDEMACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzX") +
"IUBxAAqXZZFUaKAgOMJDTLBAzUTCUKx7HynQACCCaTpGVo8hYhEoDJKMdB1HIZIwyBBcqBNWTFdLAAJFKTdKAMIyiGp4DbudjyXg6V5OTblez9P7AMBvS6nKrhcp2Prh" +
"TSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaJnaC5aiuCT7VRjWDYFgFdTpQC8bZuGz7Trmd59XTadhYHSsAyNRDCL6tayLDxSZabZ5aOa6HoOS4" +
"kjGY4vnQeAEBaCYOkQYYslYCpvA+D5FmSc55j0PhfF8eYHlwQZ2nQTImDsFRaioVB9j8Hx/k+c53n4fogAeTJFHuXY3HCTAygyAociMKBKEKBIeCiCZyHYEAnCEOBUh+" +
"BQhBgNIegKCgYBySAgh2SAUgINAMmMNIgCcCYjn4KoKmKSI2C6CpiHIagkDMYgCAoIg1A0IxEhsJgJFiPg+g+Y4yFYOA0GMWIIloNhNGIaIXCUI5CE4SwkEkchOFCFIl" +
"BkThQCUCQZDYSglCQcxaEUX5IBmBJhDeDZZDYOwlgmQhghaGZmkmKhnhoZo5ioTYYk2WYEgEYAnGOGJlDkCQyECDqfCkNoCCUSQ6A6BYhCgCZ0g6HoOEmWR9GFYw4m0O" +
"wIlIJIHCRc4shGJhpjoaocieaZiC6GAimkUgehIOwnGYEYGGiah6jaE4rg6SpCjKK5rEOMYjGGGIChKOgglmdoij6L5aEYfo6CkGIEAQgIA==");
spXMLGrid1->GetVisualAppearance()->Add(2,_bstr_t("gBFLBCJwBAEHhEJAAChABC0MACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziaQIRDINQlSTJcQjKKEUQTFiXIyAKKwEgmEQMQiCcbzX") +
"IUBxAAqXZZFUaKAgOMJDTLBAzUTCUKx7HynQACCCaTpGVo8hYhEoDJKMdB1HIZIwyBBcqBNWTFdLAAJFKTdKAMIyiGp4DbudjyXg6V5OTblez9P7AMBvS6nKrhcp2Prh" +
"TSYWr+Gp5R7IMhyLI8Uw/DS/Yq1GDYIiuOoIQhCUD0LQ9EyXJqnaJnaC5aiuCT7VRjWDYFgFdTpQC8bZuGz7Trmd59XTadhYHSsAyNRDCL6tayLDxSZabZ5aOa6HoOS4" +
"kjGY4vnQeAEBaCYOkQYYslYCpvA+D5FmQf56D0PhPF+G5Fl4YZ3BAfY9BMKYOkUVoqhUH4PleZ53mkehfjgBZ9H4XxTBWcR2l2QwwkoMgKHKDIhCkCgSHiIgnkmWBMhw" +
"f5egglInGEAh6A0KBgiMIICHdLIIlAM4MlKAIcCaIYIjYLoLGKIhqCcMxiR8JQ1A0IxEhsJgJFiPg+guI4yFYOA0GMWIUloNhNGIaIXCUI5CE4SwkEkchMhGCxlBkQIU" +
"CQZJZCiFIRk0aQVH8IBmAOBJeDcZJYmyFgnAmAhaGaCxmGmIhqhoZJZgiXYYAgFgCHQOYOFOEITCQCJpCyEoTVUNoACUZJiFCEoekiaZgmSHQXlYEh0DuDpTjCDQiEgc" +
"hAg0IpJBoXoZiYKYqHaHAimkYguhMIZpAOMh0GEGBmg6JYqmkGowmyK4rAqNoyDsGg2BmCApCuAgNh8agrkqdYkGea4ChGCBAEAgI");
spXMLGrid1->PutHideSelection(EXMLGRIDLib::exHideAlways);
spXMLGrid1->PutExpandButtons(EXMLGRIDLib::exCustom);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_TRUE,16777216);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_FALSE,33554432);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing);
			EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
				var_Nodes1->Add(L"Sub Child <b>2.1",vtMissing,vtMissing)->PutValue(long(101));
				EXMLGRIDLib::INodePtr var_Node2 = var_Nodes1->Add(L"Sub Child <b>2.2",vtMissing,vtMissing);
					EXMLGRIDLib::INodesPtr var_Nodes2 = var_Node2->GetNodes();
						var_Nodes2->Add(L"Sub Child <b>2.1.1",vtMissing,vtMissing)->PutValue(long(101));
						var_Nodes2->Add(L"Sub Child <b>2.2.2",vtMissing,vtMissing)->PutValue(long(102));
					var_Node2->PutExpanded(VARIANT_FALSE);
			var_Node1->PutExpanded(VARIANT_TRUE);
	var_Node->PutSelected(VARIANT_TRUE);
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutLevelWidth(0,64);
spXMLGrid1->PutLevelWidth(1,96);
spXMLGrid1->PutLevelWidth(2,96);
spXMLGrid1->EndUpdate();

21
Does your control support transparent selection

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutSelBackMode(EXMLGRIDLib::exTransparent);
spXMLGrid1->PutSelBackColorChild(spXMLGrid1->GetSelBackColor());
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing);
			EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
				var_Nodes1->Add(L"Sub Child <b>2.1",vtMissing,vtMissing)->PutValue(long(101));
				EXMLGRIDLib::INodePtr var_Node2 = var_Nodes1->Add(L"Sub Child <b>2.2",vtMissing,vtMissing);
					EXMLGRIDLib::INodesPtr var_Nodes2 = var_Node2->GetNodes();
						var_Nodes2->Add(L"Sub Child <b>2.1.1",vtMissing,vtMissing)->PutValue(long(101));
						var_Nodes2->Add(L"Sub Child <b>2.2.2",vtMissing,vtMissing)->PutValue(long(102));
					var_Node2->PutExpanded(VARIANT_TRUE);
			var_Node1->PutExpanded(VARIANT_TRUE);
	var_Node->PutSelected(VARIANT_TRUE);
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutLevelWidth(0,64);
spXMLGrid1->PutLevelWidth(1,96);
spXMLGrid1->PutLevelWidth(2,96);
spXMLGrid1->EndUpdate();

20
How can I show the selection with some transparent marker

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
spXMLGrid1->PutAllowDuplicateEntries(VARIANT_TRUE);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(101));
	var_Node->PutSelected(VARIANT_TRUE);
	var_Node->PutExpanded(VARIANT_TRUE);
EXMLGRIDLib::INodePtr var_Node1 = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
		var_Nodes1->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes1->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(101));
spXMLGrid1->PutLevelWidth(0,64);
spXMLGrid1->PutLevelWidth(1,96);
spXMLGrid1->PutLevelWidth(2,96);
spXMLGrid1->PutShowFocusRect(VARIANT_FALSE);
spXMLGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAChABdcGACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziYBYJhGBQxAJCI4DBCIZBwGKQBjASQpUhqHYDTbIMByB") +
"IUIxMGiYIRoGAxTiAMo8RrSEZTdD8ExTAZ/XzfMAKRpOFo/ULEUw0NR8aRABiNQbkWjYDp1f5nVRaFTxYKoSxbNqIRpGCzoJrKdI1SBEMTWBAddSdBKzX7tHArLgSQJd" +
"SrLMrzDIka4cACcZxkCioXozBpZVjRMaZJC2KAbMaBQgsQALGqjAaVUJQEgZTTmHS/BLPYDsLQdDyXAqnYTkFwWZa4ATtOK5b6jK6dQgmfAAaJGWzYHpGL4QGCYZKGap" +
"MgsKaVmwYp8j2RoCCWB4VHQIQjD6FIjF2RpumyewRj6XYrjoMpdk4Pgbm4DZXmmSpRnWeJ9hiN4zAkSRCECBAkFAGhGDGUB1ByBhVGUCxAkQIQ2AsRZRFQDAoEIXoXCU" +
"IQGBSNg9BoYBNjMbJ/DGTBznyQAwCIKISCOCRigiHgqgmIhIgCfw3k2dgFn6DAihiMg1g2Yo4mINoNBCEwMkOCgPDOTgyhCZBJBYRIQTGmYOGQaQ2E6EQjhkLg2hOZRJ" +
"DoURAmSSRWFqEJlHAAhZhaZgJHYX4YCWKYKFOGQljmGgohoJoYloUoambTxqgmZwZkoboWCYeZWFaHaOBDRIkCmahDhIIh5nmfoHGOKgmDmIpjGiHoIEIVQjnyXA3A+c" +
"wgkiIooloZgoiWD5zgCYIMhCFAEIC");
spXMLGrid1->PutSelBackColor(0x1000000);
spXMLGrid1->PutSelForeColor(-1);
spXMLGrid1->PutSelBackColorChild(-1);
spXMLGrid1->PutSelForeColorChild(-1);
spXMLGrid1->EndUpdate();

19
How can I highlight the focused/selected node only, instead highlighting its childrend collection (method 3)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(101));
	var_Node->PutSelected(VARIANT_TRUE);
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutLevelWidth(0,64);
spXMLGrid1->PutLevelWidth(1,96);
spXMLGrid1->PutLevelWidth(2,96);
spXMLGrid1->PutShowFocusRect(VARIANT_FALSE);
spXMLGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAChABGYDg6AADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKNYykCIRSDUJYkSZEIyjAIoBQ4GACJBmKKodgONYYTLFYCwT") +
"JETw5FKEZTEWQBTjGOY5TbNcgUPCMex7IiVJYpOK6ThqTYfQjLUBvfTgAS4f6Laaneg4JDOUYtTjIADRWBMeSxAatK6rWr7BqOYoDUJZcQyDIcNzXAa9aLjO5wAiWPp4" +
"VJZM54FKVEzfQSrZqoDIrEgOZpBYjMdSgADFXQGDbHbhuS5IWwTBpQZhaGZQTb+mZtZ7oMI6HTuSztW7EMLAC6bJx7LoDazoGKSDo0TZRXLNYqzPIdf4OVq4YTxVi2PZ" +
"GnmLJfGwOY8m2NhTAmPJcmAZBbmiDo3DuW4ZEgAQQhKAYkkYdA6hyDIjBkAIqBgQgmn0YxRFgGIjF8CRwhOB4ZAkPQdFYMRfCsYICFYCgkEkEhCA0JDeEICglgqYo0i4" +
"XQMEgZI9gaToYHSb4Hk6Y4+CGB5hlOJgbC8TBoiQAArgqco4muC5OkOMJtguYxIlYMg7GME4uC0K4AAKKg+DwJADiCZw5k6KQWEaEYOHkChADwI5izIKwKjKzQ8E8A4i" +
"FaEYOjOMgvhEZRjiIVA8CUEouE9SRJEycoWCMCJmFvUAzkYZArAACAgi0PInEkGhauKCYsmqHQPCmSAAgsSp5lCc4dg6WgUm6DkQhicw8g8OiDiwKQDk6EoNCgU40m6J" +
"ZpFiUoSDyaQCokLIqAobh3iWKRogaB4MmWKhsjMLJLCAAorCyagokYIoImsM46DEOwPEoSovABZR0nSL5pFgfgfhALAqFaPw9CuUrgC2CxSlidQ9E8SoSkSEpsZXj5LF" +
"sNAAC2bZLDydYwiaW4GFOMIPGsPpcC2QACmSOQuA8a42EvYoZnKcVsAOPJwD0bpSmKagAAuO52m0PYsCmcoLkCLhLjSOwuguIAAjyQpvnkLobkOaQpC6f5CkuQAAj6Bp" +
"PHwZwCkQKYzkqcQ9k8Y5cj2RejH8JpGE8eZykeSprnmcwoC+TADAAAJMEwA5jDaSoyksHh8rmDLgDBzoHDyJIPCOUpejWbQKG8PJQHMIwPE6UJrhsPpljeLJ9CieQ+DS" +
"YwQAAMR1kOZxejGb57hcYQ8mufR4nmVwMFAAJHDGDBzmsbozk8TYHHKN42G2LJHAADJNmSe5enOTIjH6Rhzk2Nke4vBMt8GAHADY5wbgUD8HEQ47wOjHHiPwMI+RigcG" +
"OAmAorgjj8EIHMTY3B0i7GePQDoBwdBvGSCcIQ6BACAIC");
spXMLGrid1->PutSelBackColor(0x1000000);
spXMLGrid1->PutSelForeColor(-1);
spXMLGrid1->PutSelBackColorChild(-1);
spXMLGrid1->PutSelForeColorChild(-1);
spXMLGrid1->EndUpdate();

18
How can I highlight the focused/selected node only, instead highlighting its childrend collection (method 2)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(101));
	var_Node->PutSelected(VARIANT_TRUE);
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutLevelWidth(0,64);
spXMLGrid1->PutLevelWidth(1,96);
spXMLGrid1->PutLevelWidth(2,96);
spXMLGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAChABJUIQAAYAQGKIaBoAKBQAGaAoDDQMw1QwAAwjSK0EwsACEIrjKCRShyCYZRhGcTSAAUEhiGKQBgiGDhViWAwyDABEbwS78agBFyRlqyfKcc") +
"x9DaAQEBA");
spXMLGrid1->PutShowFocusRect(VARIANT_FALSE);
spXMLGrid1->PutSelBackColor(0x1a0a0a0);
spXMLGrid1->PutSelForeColor(-1);
spXMLGrid1->PutSelBackColorChild(-1);
spXMLGrid1->PutSelForeColorChild(-1);
spXMLGrid1->EndUpdate();

17
How can I highlight the focused/selected node only, instead highlighting its childrend collection (method 1)

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child <b>1",vtMissing,vtMissing)->PutValue(long(100));
		var_Nodes->Add(L"Child <b>2",vtMissing,vtMissing)->PutValue(long(101));
	var_Node->PutSelected(VARIANT_TRUE);
	var_Node->PutExpanded(VARIANT_TRUE);
spXMLGrid1->PutLevelWidth(0,64);
spXMLGrid1->PutLevelWidth(1,96);
spXMLGrid1->PutLevelWidth(2,96);
spXMLGrid1->PutHideSelection(EXMLGRIDLib::exHideAlways);
spXMLGrid1->GetVisualAppearance()->Add(1,_bstr_t("gBFLBCJwBAEHhEJAAChABdcGACAADACAxRDQNABQKAAzQFAYaBmGqGAAGEaRWgmFgAQhFcZQSKUOQTDKMIziYBYJhGBQxAJCI4DBCIZBwGKQBjASQpUhqHYDTbIMByB") +
"IUIxMGiYIRoGAxTiAMo8RrSEZTdD8ExTAZ/XzfMAKRpOFo/ULEUw0NR8aRABiNQbkWjYDp1f5nVRaFTxYKoSxbNqIRpGCzoJrKdI1SBEMTWBAddSdBKzX7tHArLgSQJd" +
"SrLMrzDIka4cACcZxkCioXozBpZVjRMaZJC2KAbMaBQgsQALGqjAaVUJQEgZTTmHS/BLPYDsLQdDyXAqnYTkFwWZa4ATtOK5b6jK6dQgmfAAaJGWzYHpGL4QGCYZKGap" +
"MgsKaVmwYp8j2RoCCWB4VHQIQjD6FIjF2RpumyewRj6XYrjoMpdk4Pgbm4DZXmmSpRnWeJ9hiN4zAkSRCECBAkFAGhGDGUB1ByBhVGUCxAkQIQ2AsRZRFQDAoEIXoXCU" +
"IQGBSNg9BoYBNjMbJ/DGTBznyQAwCIKISCOCRigiHgqgmIhIgCfw3k2dgFn6DAihiMg1g2Yo4mINoNBCEwMkOCgPDOTgyhCZBJBYRIQTGmYOGQaQ2E6EQjhkLg2hOZRJ" +
"DoURAmSSRWFqEJlHAAhZhaZgJHYX4YCWKYKFOGQljmGgohoJoYloUoambTxqgmZwZkoboWCYeZWFaHaOBDRIkCmahDhIIh5nmfoHGOKgmDmIpjGiHoIEIVQjnyXA3A+c" +
"wgkiIooloZgoiWD5zgCYIMhCFAEIC");
spXMLGrid1->PutBackground(EXMLGRIDLib::exShowFocusRect,0x1000000);
spXMLGrid1->EndUpdate();

16
How do I enable the scrollbar-extension, as thumb to be shown outside of the control's client area

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->BeginUpdate();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <font ;6><off 4>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
			var_Node1->PutValue("<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1");
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodesPtr var_Nodes1 = spXMLGrid1->GetNodes()->Add(L"Parent <font ;6><off 4>2",vtMissing,vtMissing)->GetNodes();
	var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
	var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);
spXMLGrid1->PutScrollBars(EXMLGRIDLib::exBoth);
spXMLGrid1->PutScrollPartVisible(EXMLGRIDLib::exVScroll,EXMLGRIDLib::exExtentThumbPart,VARIANT_TRUE);
spXMLGrid1->PutScrollPartVisible(EXMLGRIDLib::exHScroll,EXMLGRIDLib::exExtentThumbPart,VARIANT_TRUE);
spXMLGrid1->PutScrollPartVisible(EXMLGRIDLib::ScrollBarEnum(0x2),EXMLGRIDLib::exExtentThumbPart,VARIANT_TRUE);
spXMLGrid1->PutScrollWidth(4);
spXMLGrid1->PutBackground(EXMLGRIDLib::exVSBack,RGB(240,240,240));
spXMLGrid1->PutBackground(EXMLGRIDLib::exVSThumb,RGB(128,128,128));
spXMLGrid1->PutScrollHeight(4);
spXMLGrid1->PutBackground(EXMLGRIDLib::exHSBack,spXMLGrid1->GetBackground(EXMLGRIDLib::exVSBack));
spXMLGrid1->PutBackground(EXMLGRIDLib::exHSThumb,spXMLGrid1->GetBackground(EXMLGRIDLib::exVSThumb));
spXMLGrid1->PutBackground(EXMLGRIDLib::exScrollSizeGrip,spXMLGrid1->GetBackground(EXMLGRIDLib::exVSBack));
spXMLGrid1->EndUpdate();

15
Does your control support Fit-To-Page, Print and Print-Preview

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <b>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child 1",vtMissing,vtMissing)->PutSelected(VARIANT_TRUE);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodePtr var_Node1 = spXMLGrid1->GetNodes()->Add(L"Parent <b>2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
		var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRINTLib' for the library: 'ExPrint 1.0 Control Library'

	#import <ExPrint.dll>
	using namespace EXPRINTLib;
*/
EXPRINTLib::IExPrintPtr var_Print = ::CreateObject(L"Exontrol.Print");
	var_Print->PutOptions("FitToPage = 1x1");
	var_Print->PutPrintExt(((EXMLGRIDLib::IXMLGridPtr)(spXMLGrid1)));
	var_Print->Preview();

14
How do I print the control
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <b>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child 1",vtMissing,vtMissing)->PutSelected(VARIANT_TRUE);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodePtr var_Node1 = spXMLGrid1->GetNodes()->Add(L"Parent <b>2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
		var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);
/*
	Includes the definition for CreateObject function like follows:

	#include <comdef.h>
	IUnknownPtr CreateObject( BSTR Object )
	{
		IUnknownPtr spResult;
		spResult.CreateInstance( Object );
		return spResult;
	};

*/
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRINTLib' for the library: 'ExPrint 1.0 Control Library'

	#import <ExPrint.dll>
	using namespace EXPRINTLib;
*/
EXPRINTLib::IExPrintPtr var_Print = ::CreateObject(L"Exontrol.Print");
	var_Print->PutPrintExt(((EXMLGRIDLib::IXMLGridPtr)(spXMLGrid1)));
	var_Print->Preview();

13
How can we can customize a context menu based on the node type

// MouseUp event - Occurs when the user releases a mouse button.
void OnMouseUpXMLGrid1(short   Button,short   Shift,long   X,long   Y)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'
		#import <EXMLGrid.dll>
		using namespace EXMLGRIDLib;
	*/
	EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
	OutputDebugStringW( L"Node:" );
	OutputDebugStringW( _bstr_t(spXMLGrid1->GetNodeFromPoint(X,Y)) );
	/*
		Includes the definition for CreateObject function like follows:
		#include <comdef.h>
		IUnknownPtr CreateObject( BSTR Object )
		{
			IUnknownPtr spResult;
			spResult.CreateInstance( Object );
			return spResult;
		};
	*/
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXCONTEXTMENULib' for the library: 'ExContextMenu 1.0 Type Library'
		#import <ExContextMenu.dll>
		using namespace EXCONTEXTMENULib;
	*/
	EXCONTEXTMENULib::IExContextMenuPtr var_ExContextMenu = ::CreateObject(L"Exontrol.ContextMenu");
		var_ExContextMenu->GetItems()->PutToString(_bstr_t("Calendar[id=20][img=0],MSChart[id=30],Record[id=40],Slider[id=50],Radio 1[id=100][typ=2][edit=],Radio 2[id=101][typ=2][edit=],R") +
	"adio 3[id=102][typ=2][edit=],ComboBox[id=90]");
		OutputDebugStringW( _bstr_t(var_ExContextMenu->Select(vtMissing,vtMissing,vtMissing)) );
}

EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->PutExpanded(VARIANT_TRUE);

12
How we can attach a customized editor, for example, a date-time picker dialog for a date-time attribute using eXMLGrid

// UserEditorClose event - Fired the user editor is about to be opened.
void OnUserEditorCloseXMLGrid1(LPDISPATCH   Object,LPDISPATCH   Node)
{
	// Node.Value = Object.Value
}

// UserEditorOpen event - Occurs when an user editor is about to be opened.
void OnUserEditorOpenXMLGrid1(LPDISPATCH   Object,LPDISPATCH   Node)
{
	// Object.Value = Node.Value
}

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->PutNodeHeight(24);
EXMLGRIDLib::IEditorsPtr var_Editors = spXMLGrid1->GetEditors();
	EXMLGRIDLib::IEditorPtr var_Editor = var_Editors->Add("ExCalendarUserEditor",EXMLGRIDLib::UserEditorType);
		var_Editor->UserEditor(L"ExCalendar.CalendarCombo",L"");
		/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXCALENDARLib' for the library: 'ExCalendar 1.0 Control Library'

	#import <ExCalendar.dll>
	using namespace EXCALENDARLib;
*/
		EXCALENDARLib::ICalendarComboPtr var_CalendarCombo = ((EXCALENDARLib::ICalendarComboPtr)(var_Editor->GetUserEditorObject()));
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Date",vtMissing,vtMissing);
	var_Node->PutEditor("ExCalendarUserEditor");
	var_Node->PutValue(COleDateTime(2001,1,1,0,00,00).operator DATE());

11
How can change the visual appearance of the expand/collapse buttons

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->Images(_bstr_t("gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTq") +
"lVq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m" +
"0ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/y" +
"NAOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=");
spXMLGrid1->GetVisualAppearance()->Add(1,"c:\\exontrol\\images\\normal.ebn");
spXMLGrid1->GetVisualAppearance()->Add(2,"c:\\exontrol\\images\\pushed.ebn");
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <b>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
			var_Node1->PutValue("<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1");
			var_Node1->PutSelected(VARIANT_TRUE);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodePtr var_Node2 = spXMLGrid1->GetNodes()->Add(L"Parent <b>2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node2->GetNodes();
		var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);
spXMLGrid1->PutExpandBarVisible(VARIANT_TRUE);
spXMLGrid1->PutExpandButtons(EXMLGRIDLib::exCustom);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_FALSE,1);
spXMLGrid1->PutExpandButtonsCustom(VARIANT_TRUE,2);
spXMLGrid1->PutBackground(EXMLGRIDLib::exExpandButtonDown,0x1808080);
spXMLGrid1->PutBackground(EXMLGRIDLib::exExpandButtonUp,0x1000000);
spXMLGrid1->PutBackground(EXMLGRIDLib::exExpandBarButtonDown,0x2808080);
spXMLGrid1->PutBackground(EXMLGRIDLib::exExpandBarButtonUp,0x2000000);
spXMLGrid1->PutShowFocusRect(VARIANT_FALSE);
spXMLGrid1->PutSelBackColor(RGB(0,0,0));
spXMLGrid1->PutSelBackColorChild(spXMLGrid1->GetSelBackColor());
spXMLGrid1->PutSelForeColor(RGB(255,255,255));
spXMLGrid1->PutSelForeColorChild(spXMLGrid1->GetSelForeColor());

10
How can change the visual appearance of the selected node

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <b>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
			var_Node1->PutValue("<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1");
			var_Node1->PutSelected(VARIANT_TRUE);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodePtr var_Node2 = spXMLGrid1->GetNodes()->Add(L"Parent <b>2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node2->GetNodes();
		var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);
spXMLGrid1->PutShowFocusRect(VARIANT_FALSE);
spXMLGrid1->PutSelBackColor(RGB(0,0,0));
spXMLGrid1->PutSelBackColorChild(spXMLGrid1->GetSelBackColor());
spXMLGrid1->PutSelForeColor(RGB(255,255,255));
spXMLGrid1->PutSelForeColorChild(spXMLGrid1->GetSelForeColor());

9
How can I select programatically a node

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <b>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child 1",vtMissing,vtMissing)->PutSelected(VARIANT_TRUE);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodePtr var_Node1 = spXMLGrid1->GetNodes()->Add(L"Parent <b>2",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes1 = var_Node1->GetNodes();
		var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);

8
How can I expand all nodes

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();

7
Does your control support subscript or superscript

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent <font ;6><off 4>1",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		EXMLGRIDLib::INodePtr var_Node1 = var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
			var_Node1->PutValue("<sha ;;0>Event <b><font ;6><off -6>2<off 4>3<off 4>1");
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->ExpandAll();
EXMLGRIDLib::INodesPtr var_Nodes1 = spXMLGrid1->GetNodes()->Add(L"Parent <font ;6><off 4>2",vtMissing,vtMissing)->GetNodes();
	var_Nodes1->Add(L"Child 1",vtMissing,vtMissing);
	var_Nodes1->Add(L"Child 2",vtMissing,vtMissing);

6
How can I add a UserType editor ( ActiveX )

// UserEditorClose event - Fired the user editor is about to be opened.
void OnUserEditorCloseXMLGrid1(LPDISPATCH   Object,LPDISPATCH   Node)
{
	// Node.Value = Object.Value
}

// UserEditorOpen event - Occurs when an user editor is about to be opened.
void OnUserEditorOpenXMLGrid1(LPDISPATCH   Object,LPDISPATCH   Node)
{
	// Object.Value = Node.Value
}

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->PutNodeHeight(24);
EXMLGRIDLib::IEditorsPtr var_Editors = spXMLGrid1->GetEditors();
	EXMLGRIDLib::IEditorPtr var_Editor = var_Editors->Add("ExComboUserEditor",EXMLGRIDLib::UserEditorType);
		var_Editor->UserEditor(L"Exontrol.ComboBox",L"");
		/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXCOMBOBOXLib' for the library: 'ExComboBox 1.0 Control Library'

	#import <ExComboBox.dll>
	using namespace EXCOMBOBOXLib;
*/
		EXCOMBOBOXLib::IComboBoxPtr var_ComboBox = ((EXCOMBOBOXLib::IComboBoxPtr)(var_Editor->GetUserEditorObject()));
			var_ComboBox->PutMinHeightList(164);
			var_ComboBox->PutMinWidthList(264);
			var_ComboBox->PutAllowSizeGrip(VARIANT_TRUE);
			var_ComboBox->PutIntegralHeight(VARIANT_TRUE);
			var_ComboBox->PutAlignment(EXCOMBOBOXLib::LeftAlignment);
			var_ComboBox->PutColumnAutoResize(VARIANT_TRUE);
			var_ComboBox->BeginUpdate();
			var_ComboBox->PutMarkSearchColumn(VARIANT_FALSE);
			EXCOMBOBOXLib::IColumnsPtr var_Columns = var_ComboBox->GetColumns();
				EXCOMBOBOXLib::IColumnPtr var_Column = ((EXCOMBOBOXLib::IColumnPtr)(var_Columns->Add(L"Car")));
					var_Column->PutWidth(32);
					var_Column->PutDisplayFilterButton(VARIANT_TRUE);
				EXCOMBOBOXLib::IColumnPtr var_Column1 = ((EXCOMBOBOXLib::IColumnPtr)(var_Columns->Add(L"Equipment")));
					var_Column1->PutDisplayFilterButton(VARIANT_TRUE);
					var_Column1->PutDisplayFilterPattern(VARIANT_FALSE);
					var_Column1->PutCustomFilter(L"Air Bag||*Air Bag*|||Air condition||*Air condition*|||ABS||*ABS*|||ESP||*ESP*");
					var_Column1->PutFilterType(EXCOMBOBOXLib::exPattern);
			EXCOMBOBOXLib::IItemsPtr var_Items = var_ComboBox->GetItems();
				var_Items->PutCellCaption(var_Items->AddItem("Mazda"),long(1),"Air Bag");
				var_Items->PutCellCaption(var_Items->AddItem("Toyota"),long(1),"Air Bag,Air condition");
				var_Items->PutCellCaption(var_Items->AddItem("Ford"),long(1),"Air condition");
				var_Items->PutCellCaption(var_Items->AddItem("Nissan"),long(1),"Air Bag,ABS,ESP");
			var_ComboBox->EndUpdate();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Car",vtMissing,vtMissing);
	var_Node->PutEditor("ExComboUserEditor");
	var_Node->PutValue("Mazda");

5
How can I load a XML file

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
spXMLGrid1->LoadXML("C:\\Windows\\Ultimate.xml");

4
How can I assign a tooltip to a node

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Title",vtMissing,vtMissing);
	var_Node->PutValue("value");
	var_Node->PutToolTip(L"This is a bit of <b>HTML</b> text to be shown when the cursor hovers the node.");

3
How can I edit the node using a DateType editor

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::IEditorsPtr var_Editors = spXMLGrid1->GetEditors();
	EXMLGRIDLib::IEditorPtr var_Editor = var_Editors->Add("DateEditor",EXMLGRIDLib::DateType);
		var_Editor->PutOption(EXMLGRIDLib::exDateMarkToday,VARIANT_TRUE);
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Date",vtMissing,vtMissing);
	var_Node->PutEditor("DateEditor");
	var_Node->PutValue(COleDateTime(2001,1,1,0,00,00).operator DATE());

2
How can I expand a node

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodePtr var_Node = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing);
	EXMLGRIDLib::INodesPtr var_Nodes = var_Node->GetNodes();
		var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
		var_Nodes->Add(L"Child 2",vtMissing,vtMissing);
	var_Node->PutExpanded(VARIANT_TRUE);

1
How can I add a node

/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXMLGRIDLib' for the library: 'EXMLGrid 1.0 Control Library'

	#import <EXMLGrid.dll>
	using namespace EXMLGRIDLib;
*/
EXMLGRIDLib::IXMLGridPtr spXMLGrid1 = GetDlgItem(IDC_XMLGRID1)->GetControlUnknown();
EXMLGRIDLib::INodesPtr var_Nodes = spXMLGrid1->GetNodes()->Add(L"Parent",vtMissing,vtMissing)->GetNodes();
	var_Nodes->Add(L"Child 1",vtMissing,vtMissing);
	var_Nodes->Add(L"Child 2",vtMissing,vtMissing);