[xpopup]
fixed a bug in LoadPopupItemsFromXML() where mID & mIcon were read incorrectly, added queryIntAttribute() function to help with this.
changed LoadPopupsFromXML() to use getfirsttok()/getnexttok() for colors
changed load() to use a for loop to get menu info.

[tstring]
changed wildtok()/nwildtok() to take/return UINT vars instead of int.
changed some more vars to be const's

[tinyxml]
change some NULL checks to exceptions
changed some vars to be const's
[general]
updated resource version.

[tstring]
added function bool empty() which gives a true/false return if the string is empty or not.
added some more const keywords where appropriate.
changed wildtok()/nwildtok() to use empty()
[tstring]
changed some more vars to be const's
changed operator +()/operator -() to return *this if tString.empty() instead of tString.m_pString == NULL
changed operator -=() to check tString.empty() instead of tString.m_pString == NULL
changed operator ==()/operator !=()/operator >()/operator >=()/operator <()/operator <=() to be shorter.
changed operator *() to return "" when sz is zero instead of *this
fixed bug in findtok() where sepChars wasn't passed along to getfirsttok()
changed sub() to check for this->empty() instead of this->m_pString == NULL
changed gettok(N,sepChars) to only check for sepChars == NULL & not to check this->m_pString == NULL, as this is handled by numtok(), instead now returns "" if nToks == 0
fixed bug in gettok(N, sepChars) where a possible buffer overrun could occur.
changed gettok(N,M,sepChars) by moving some argument checks to the start & adding a check for N == 0 & M == 0, also changed check for m_pString == NULL to nToks == 0
fixed same bug in gettok(N,M,sepChars) as in gettok(N,sepChars)
fixed bug in gettok(N,M,sepChars) where end of string to be extracted was set incorrectly.
changed getfirsttok() to saved token vars are always set first.
changd getlasttoks()/numtok()/deltok()/istok()/wildtok()/nwildtok() to check for this->empty() instead of m_pString == NULL
changed addtok(cToken, sepChars) to do a specific if (mp_len > 0) check  instead of if (mp_len)
changed addtok(nToken, sepChars) to handle cases where string is empty.
changed istok() to check for sepl == 0
changed istok() to be abit shorter.
changed puttok()/remtok() to take a const UINT N arg
changed trim()/strip() to check for this->empty() at the start.
changed wildtok()/nwildtok() to specificly check for match() != NOMATCH
[general]
changed ParseCommandToLogfont() to use getlasttoks()
changed dcxLoadIcon()/dcxLoadBitmap() to use an exception instead of doing a NULL check.
changed IsFile() to use filename.empty() instead of filename.len() <= 0
changed mIRC_OutText() to use txt.clear() instead of txt == ""
changed mIRC_DrawText() to use tmp.empty() instead of tmp.len() > 0
changed TGetWindowText() to use txt.clear()
added function queryAttribute() to replace the same function used in several objects.

[treeview]
change to use .empty() & getnexttok() & getlasttoks()

[xpopup]
changed hasCallback()/DrawItemText() to use empty()
changed parseXMenuBarInfo()/parseIdentifier() to use %u instead of %d in wnsprintf()
changed parseXMenuBarCommand() to use .clear()
changed LoadPopupsFromXML() to check if tsBkg is empty before trying to load the image.
changed LoadPopupsFromXML()'s icon loading loop to use getnexttok() & queryAttribute() & to check if the filename is empty before trying to load icons.
[general]
changed to use getlasttoks() where appropriate.
changed to use TString.empty() checks where appropriate.
fixed /xdid -R var name conflict.
changed %d usage in formatted printing to %u where an unsigned var is being used.
changed function name isUnloadSave() to isUnloadSafe()
changed unload code to free richedit library.

[cla]
code style changes only...

[webctrl]
fixed bug in constructor that could have used a dereferenced pointer.

[toolbar]
changed parseCommandRequest() /xdid -a to use an exception instead of a NULL check.
changed parseCommandRequest() to use TString.clear()

[xstatusbar]
changed /xstatusbar -t to make better use of getnexttok()/getlasttoks()
changed $xstatusbar().parts to simply addtok() the parts info.

[divider]
added some error checking to DrawXorBar()
changed Divider_CalcBarPos() to use MapWindowPoints() instead of ClientToScreen()

[calendar]
changed constructor to zero Month Day State's
changed the MonthDayState's to be a persistent var in the object to avoid any `out of scope` issues.

[ipaddress]
changed /xdid -a to use TString.to_addr()

[panel]
fixed bug in /xdid -d where a dereferenced pointer was used when an error occurred.

[edit]
fixed several cases where to_chr()  should have been to_wchr()

[text]
changed /xdid -r to use TString.clear()

[xpopup]
changed LoadPopupsFromXML() to show an error when loading items fails.
changed LoadPopupsFromXML() to clear the filename after each icon file is finished.
[dcxml]
lots of vars made const's
removed queryAttribute() & changed the code to use the general queryAttribute() function in misc.cpp
changed lots of code to use a temp reference var instead of calling the same function again & again
fixed several duplicate var names between local & global vars.
changed parseControl() to avoid all the strcmp() calls & instead use a switch statement.
[general]
changed dcxLoadIcon() to display an error if its unable to load a filetype icon (/xdid -w +f)
added var check to error() to help avoid error message looping when a verbose error would its self cause an error.

[xpopup]
changed LoadPopupItemsFromXML() to use XSwitchFlags for the item state.

[tstring]
changed int()/double()/__int64() functions to be consts
added to_dword() function.
changed TString::TString( const TString & tString ) constructor to check !tString.empty() instead of tString.m_pString != NULL
improved addtok() again...
[general]
changed xdid -Z to use an unsigned percentage var

[xdock]
changed some more TString.len() check to use TString.empty() instead
changed the window proc's to use a new WM_DESTROY code (testing)

[comnboex]
changed a TString.len() check to use TString.empty() instead.

[dialog]
made sure m_bErrorTriggered is initialized to false.
changed xdialog -S to use GetWindowRect() again.
changed $xdid().ismarked to always return $true
added keyup/keydown callback events to dialog
[general]
changed all dialog collection functions to check m_vpDialog.empty() first.

[dcxml]
fixed bug in parseStyle() where var named styles was used when it should have been tiStyles
added a C++11 version of the loop to parseId()

[webctrl]
added error message to /xdid -n for when we can't allocate memory.

[cla]
changed getMinMaxInfo() to be a const function.
changed parsePath() to use an unsigned depth var
[list]
changed $xdid().find to support exact match finds too. exact match is the default if neither regex or wildcard are specified.
changed /xdid -d to support regex/wildcard/exact match deletes where all lines matching the supplied pattern starting from the line given are deleted.
  xdid -d dname id [N] [+flags] [match text]
changed matchItemText() to support exact matches.
[edit]
added /xdid -V dname id which clears the caret position.

[richedit]
added $xdid().rtftext to return the controls contents as rtf formatted text.
  $xdid(dname,id).rtftext = text in standard rtf format
  $xdid(dname,id,utf8).rtftext = text in utf8 rtf format

added functions SaveRichTextToFile()/LoadRichTextFromFile()/StreamOutToVarCallback()/StreamOutToFileCallback()/StreamInFromFileCallback() to handle the new rtf loading/saving
changed /xdid -a so it no longer has to parse the whole line of text when new text is added.
changed code where appropriate to use getloasttoks()
changed TString.len() checks to use TString.empty() instead where appropriate.
changed /xdid -t to support loading rtf files as well as plain text
  xdid -t dname id [filename] = always load plain text (can be either ascii or utf, is converted on load)
  xdid -t dname id [+flags] [filename]
    xdid -t dname id +o [filename] = same as old method.
    xdid -t dname id + [filename] = load an rtf file.

changed /xdid -u to support saving rtf files as well as plain text
  xdid -u dname id [filename] = save as plain text
  xdid -u dname id [+flags] [filename]
    xdid -u dname id +o [filename] = save as plain text
    xdid -u dname id + [filename] = save as rtf

changed /xdid -Z to be /xdid -z as the -Z confliucts with a common command.
added the function parseStringContents() to allow adding strings without having to parse the whole thing.
added support for italic text.
fixed error in keydown event where a ':' was included in the text by mistake.