59
Is it possible to hide the context's images

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutImageSize(0);
spExpression1->PutLineHeight(L"dpi*16");
spExpression1->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==");
spExpression1->PutExpression(L"value format ``");
spExpression1->PutSplitPaneWidth(312);

58
ImageSize property on 32 (specifies the size of control' icons/images/check-boxes/radio-buttons)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutImageSize(32);
spExpression1->GetFont()->PutSize(_variant_t(long(16)));
spExpression1->GetToolTipFont()->PutSize(_variant_t(long(16)));
spExpression1->PutToolTipWidth(512);
spExpression1->PutLineHeight(L"dpi*32");
spExpression1->Images(_bstr_t("gBJJgBAIDAAEg4AEEKAD/hz/EMNh8TIRNGwAjEZAEXjAojKAjMLjABhkaABAk0plUrlktl0vmExmUzmk1m03nE5nU7nk9miAoE+oVDolFo1HpFJpU5h8Sf9OqFNqUOq") +
"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");
spExpression1->PutExpression(L"value format ``");
spExpression1->PutSplitPaneWidth(312);

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

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutImageSize(16);
spExpression1->PutLineHeight(L"dpi*16");
spExpression1->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==");
spExpression1->PutExpression(L"value format ``");
spExpression1->PutSplitPaneWidth(312);

56
How can I convert the bytes to KB (kilo-bytes), MB (mega-bytes) or GB (giga-bytes)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(256);
spExpression1->PutExpression(_bstr_t("int(0:=(1:=value)/1024/1024/1024) ? round(=:0*10)/10 + ` GB` : (int(0:==:1/1024/1024) ? round(=:0*10)/10 + ` MB` : (int(0:==:1/") +
"1024) ? round(=:0*10)/10 + ` KB` : =:1 + ` B`))");
spExpression1->PutEvaluationText(L"value = 18\\r\\nvalue=1888\\r\\nvalue=18888888\\r\\nvalue=1888888888");

55
Convert local time to Coordinated Universal Time (UTC)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"type(value) = 7 ? date(value + bias/24/60) : value");
spExpression1->PutSplitPaneWidth(256);

54
Convert Coordinated Universal Time (UTC) to local time

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"type(value) = 7 ? date(value - bias/24/60) : value");
spExpression1->PutSplitPaneWidth(256);

53
How can I show values with 1 decimal only if not integer such as 1.5, 2 (method 2)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"(((value format `1|,|3|,`) + `x`) replace `,0x` with ``) replace `x` with ``");
spExpression1->PutSplitPaneWidth(256);

52
How can I show values with 1 decimal only if not integer such as 1.5, 2 (method 1)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value format `1|.|3|,` replace `.0` with ``");

51
The sample displays the value in years, months, weeks, days, hours, minutes and secons

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("trim((1:=int((0:=value)/365) ? =:1 + ` year(s) ` : ``)  + (1:=int((0:=(=:0 - (=:1*365)))/31) ? =:1 + ` month(s) ` : ``) + (1:=i") +
"nt((0:=(=:0 - (=:1*31)))/7) ? =:1 + ` week(s) ` : ``) + (1:=int((0:=(=:0 - (=:1*7)))/1) ? =:1 + ` day(s) ` : ``) + (1:=int((0:=(" +
"=:0 - =:1 + 1/24/60/60/2))*24) ? =:1 + ` hour(s) ` : ``) + (1:=int((0:=(=:0*24 - =:1))*60) ? =:1 + ` min(s) ` : ``) + (1:=int((0" +
":=(=:0*60 - =:1))*60) ? =:1 + ` sec(s)` : ``))");
spExpression1->PutEvaluationText(L"value = 1\\r\\nvalue=2 + 1/24/60\\r\\nvalue=365 + 12 * 1/24\\r\\nvalue=1212.25\\r\\nvalue=366.02512");
spExpression1->PutSplitPaneWidth(464);

50
The sample displays the value in seconds

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"(1:=(int(0:=(value*24*60*60 + 1/24/60/60/2))) ? =: 1 + ` sec(s)` : ``)");
spExpression1->PutEvaluationText(L"value = 1\\r\\nvalue=2 + 1/24/60\\r\\nvalue=365 + 12 * 1/24\\r\\nvalue=1212.25\\r\\nvalue=366.02512");
spExpression1->PutSplitPaneWidth(256);

49
The sample displays the value in minutes and seconds

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("trim((1:=(int(0:=(value*24*60 + 1/24/60/60/2))) ? =: 1 + ` min(s)` : ``) + ` ` + (2:=int((=:0 - =:1)*60) ? =:2 + ` sec(s)` : ``") +
"))");
spExpression1->PutEvaluationText(L"value = 1\\r\\nvalue=2 + 1/24/60\\r\\nvalue=365 + 12 * 1/24\\r\\nvalue=1212.25\\r\\nvalue=366.02512");
spExpression1->PutSplitPaneWidth(256);

48
The sample displays the value in hours and minutes

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("((1:=int(0:=( 24*int(value) + (value - int(value) + 1/24/60/60/2)*24))) != 0 ? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((") +
"1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')");
spExpression1->PutEvaluationText(L"value = 1\\r\\nvalue=2 + 1/24/60\\r\\nvalue=365 + 12 * 1/24\\r\\nvalue=1212.25\\r\\nvalue=366.02512");
spExpression1->PutSplitPaneWidth(256);

47
How can I check for a blank-date (sample 3) Expression

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("type(value) case ( default : `<fgcolor=000000><s>invalid</s></fgcolor>`; 0 : `<fgcolor=FF0000>null</fgcolor>`; 1 : `null` ; 7 :") +
" longdate(value) )");
spExpression1->PutSplitPaneWidth(256);

46
How can I check for a blank-date (sample 2) Expression

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"len(value) ? longdate(value) : ``");
spExpression1->PutSplitPaneWidth(256);

45
How can I check for a blank-date (sample 1) Expression

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"type(value) = 7 ? longdate(value) : ``");
spExpression1->PutSplitPaneWidth(256);

44
Easter Sunday

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("date(dateS('3/1/' + year(value)) + ((1:=(((255 - 11 * (year(value) mod 19)) - 21) mod 30) + 21) + (=:1 > 48 ? -1 : 0) + 6 - ((y") +
"ear(value) + int(year(value) / 4)) + =:1 + (=:1 > 48 ? -1 : 0) + 1) mod 7))");
spExpression1->PutSplitPaneWidth(256);

43
The sample displays the value in days, hours and minutes

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("((1:=int(0:= (value))) != 0 ? (=:1 + ' day(s)') : '') + (=:1 ? ' ' : '' ) + ((1:=int(0:=((=:0 - =:1 + 1/24/60/60/2)*24))) != 0 ") +
"? =:1 + ' hour(s)' : '' ) + (=:1 ? ' ' : '' ) + ((1:=round((=:0 - =:1)*60)) != 0 ? =:1 + ' min(s)' : '')");
spExpression1->PutSplitPaneWidth(256);

42
How can I display the date in short format

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"shortdate(date(value))");
spExpression1->PutSplitPaneWidth(256);

41
How can I display the date in long format

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"longdate(date(value))");
spExpression1->PutSplitPaneWidth(256);

40
The sample displays the positive values in blue, being preceded by + sign, negative values in red preceded by - sign, 0 as 0.00 while for null values is displays null. The numbers are displayed using 2 digits, . as decimal separator and grouping by 3 digits by , separator

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("type(value) in (0,1) ? 'null' : ( dbl(value)<0 ? '<fgcolor=FF0000>'+ (value format '2|.|3,' ) : (dbl(value)>0 ? '<fgcolor=0000F") +
"F>+'+(value format '2|.|3,' ): '0.00') ) ");
spExpression1->PutSplitPaneWidth(256);

39
How can I format a numeric value so it display as a currency

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"currency(dbl(value))");
spExpression1->PutSplitPaneWidth(256);

38
How can I format a numeric value to with grouping

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"dbl(value) format ''");
spExpression1->PutSplitPaneWidth(256);

37
How can I convert the value to a numeric ( integer ) value

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"int(value)");
spExpression1->PutSplitPaneWidth(256);

36
How can I convert the value to a numeric ( double ) value

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"dbl(value)");
spExpression1->PutSplitPaneWidth(256);

35
How can I format a date as YYYY-MMM-DD (sample 4)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("(year(value) + '-') + (month(value) array('','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')) + '-' + ") +
"(day(value)<10 ? '0' : '') + day(value)");
spExpression1->PutSplitPaneWidth(256);

34
How can I format a date as YYYY-MMM-DD (sample 3)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("(2 array ( 0 := (shortdateF(value) split `/`) ) ) + `-`+ ((month(value) - 1) array `Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov") +
" Dec` split ` `) + `-`+ (1 array =: 0)");
spExpression1->PutSplitPaneWidth(256);

33
How can I format a date as YYYY-MMM-DD (sample 2)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("ltrim((2 array longdate(value) split `,`)) + `-` +  ((1 array (1 array longdate(value) split `,`) split ` `) left 3 ) + `-` + (") +
"`00` left (2 - len(day(value)))) + day(value)");
spExpression1->PutSplitPaneWidth(256);

32
How can I format a date as YYYY-MMM-DD (sample 1)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(_bstr_t("year(value) + `-` +  (month(value)-1 array ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec')) + `-` + (") +
"`00` left (2 - len(day(value)))) + day(value)");
spExpression1->PutSplitPaneWidth(256);

31
How can I use my own operators only

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutAllowValueKeyword(VARIANT_FALSE);
spExpression1->PutAllowDefaultOperators(VARIANT_FALSE);
spExpression1->AddCustomOperator(L"+","<b>+</b>","This is a new binary-operator",long(2));
spExpression1->AddCustomOperator(L"xxx","<b>xxx</b>","This is a new keyword",long(0));
spExpression1->AddCustomOperator(L"yyy","<b>yyy</b>","This is a unary-operator",long(1));
spExpression1->AddCustomOperator(L"zzz","<b>zzz</b>","This is a binary-operator",long(2));
spExpression1->PutText(L"xxx + yyy(100 zzz 200)");

30
How can I add a new binary-operator

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->AddCustomOperator(L"xxx","<b>xxx</b>","This is a new binary-operator",long(2));
spExpression1->PutText(L"value + 100 xxx 200");

29
How can I add a new unary-operator

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->AddCustomOperator(L"xxx","<b>xxx</b>","This is a new unary-operator",long(1));
spExpression1->PutText(L"value + xxx(100)");

28
How can I add a new keyword

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->AddCustomOperator(L"xxx","<b>xxx</b>","This is a new keyword",long(0));
spExpression1->PutText(L"value + xxx");

27
How can I disable all operators
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutAllowValueKeyword(VARIANT_FALSE);
spExpression1->PutAllowDefaultOperators(VARIANT_FALSE);

26
How can I disable the value keyword
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutAllowValueKeyword(VARIANT_FALSE);

25
Usage of and ( and operator )

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"(value contains 1) and (value != 1)");

24
Usage of or ( or operator )

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"(value=1) or value=`string`");

23
Usage of not ( not operator )

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"not(value=1)");

22
Usage of - ( subtraction operator )

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"value - 2");

21
Usage of + ( addition operator )

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"value + 2");

20
Usage of mod ( reminder operator )

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"value mod 2");

19
Usage of / (divide operator)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"value / 2");

18
Usage of * (multiplicity operator)

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"2 * value");

17
How can I get the word from cursor when user double clicks the control
// DblClick event - Occurs when the user double clicks the left mouse button over an object.
void OnDblClickExpression1(short   Shift,long   X,long   Y)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'
		#import <Expression.dll>
		using namespace EXPRESSIONLib;
	*/
	EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
	OutputDebugStringW( L"Word: " );
	OutputDebugStringW( spExpression1->GetWordFromPoint(-1,-1,vtMissing) );
}

EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value");
spExpression1->PutAllowSplitter(EXPRESSIONLib::exVSplitter);
spExpression1->PutSplitPaneHeight(196);

16
How do I determine the word from the cursor
// Click event - Occurs when the user presses and then releases the left mouse button over the list control.
void OnClickExpression1()
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'
		#import <Expression.dll>
		using namespace EXPRESSIONLib;
	*/
	EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
	OutputDebugStringW( L"Word: " );
	OutputDebugStringW( spExpression1->GetWordFromPoint(-1,-1,vtMissing) );
}

EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value");
spExpression1->PutSplitPaneHeight(196);
spExpression1->PutBackground(EXPRESSIONLib::exVSplitterApp,RGB(240,240,240));
spExpression1->PutAllowSplitter(EXPRESSIONLib::exVSplitter);

15
How can I check if the expression is valid/syntactically correct
// Change event - Indicates that the control's text has changed.
void OnChangeExpression1()
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'
		#import <Expression.dll>
		using namespace EXPRESSIONLib;
	*/
	EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
	OutputDebugStringW( L"Valid: " );
	OutputDebugStringW( _bstr_t(spExpression1->GetIsValid()) );
}

EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value");
spExpression1->PutSplitPaneHeight(196);
spExpression1->PutBackground(EXPRESSIONLib::exVSplitterApp,RGB(240,240,240));
spExpression1->PutAllowSplitter(EXPRESSIONLib::exVSplitter);

14
How can I change the visual appearance of the horizontal splitter

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value");
spExpression1->PutSplitPaneHeight(196);
spExpression1->PutBackground(EXPRESSIONLib::exVSplitterApp,RGB(240,240,240));
spExpression1->PutAllowSplitter(EXPRESSIONLib::exVSplitter);

13
How can I change the visual appearance of the vertical splitter

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value");
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutBackground(EXPRESSIONLib::exHSplitterApp,RGB(240,240,240));

12
How can I add a new menu-item to control's context menu
// ExecuteContextMenu event - Occurs when the user selects an user item from the control's context menu.
void OnExecuteContextMenuExpression1(LPCTSTR   Item,long   Position)
{
	/*
		Copy and paste the following directives to your header file as
		it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'
		#import <Expression.dll>
		using namespace EXPRESSIONLib;
	*/
	EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
	OutputDebugStringW( L"ExecuteContextMenu: " );
	OutputDebugStringW( L"Item" );
}

EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value + 100");
spExpression1->PutContextMenuItems(L"Test");

11
How can I change the tooltip that shows when cursor hovers a keyword

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value");
spExpression1->PutDescription(EXPRESSIONLib::exKeywordValue,L"This is a bit of text to be shown when cursor hovers the <b>value</b> keyword.");
spExpression1->Refresh();

10
How do I check if the expression is correct
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"currency(value)");
OutputDebugStringW( _bstr_t(spExpression1->GetIsValid()) );

9
How do I programmatically evaluate the expression
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"currency(value)");
OutputDebugStringW( _bstr_t(spExpression1->GetEvaluate("value=100")) );

8
How can I assign multiple values for variables %1, %2, ...

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"currency(%1 + %2)");
spExpression1->PutEvaluationText(L"%1 = 100;%2 = 200");

7
How can I change the values to show the result
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"currency(value)");
spExpression1->PutEvaluationText(L"value = 100");

6
How can I prevent changing the color when expression is invalid
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"value 2");
spExpression1->PutForeColorInvalid(RGB(0,0,0));

5
How can I change the color when expression is invalid
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"value 2");
spExpression1->PutForeColorInvalid(RGB(255,0,0));

4
How can I prevent evaluation the selection

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

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"value + 1");
spExpression1->PutEvaluateSelection(VARIANT_FALSE);
spExpression1->PutHideSelection(VARIANT_FALSE);
spExpression1->PutSelLength(1);

3
How can I programatically show the result
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutSplitPaneWidth(196);
spExpression1->PutExpression(L"value");

2
How can I get ride of the right-vertical line/split
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutAllowSplitter(EXPRESSIONLib::exNoSplitter);
spExpression1->PutExpression(L"value + 1");

1
How can I change the control's background
/*
	Copy and paste the following directives to your header file as
	it defines the namespace 'EXPRESSIONLib' for the library: 'Expression 1.0 Control Library'

	#import <Expression.dll>
	using namespace EXPRESSIONLib;
*/
EXPRESSIONLib::IExpressionPtr spExpression1 = GetDlgItem(IDC_EXPRESSION1)->GetControlUnknown();
spExpression1->PutExpression(L"value");
spExpression1->PutBackColor(RGB(240,240,240));