String Handling

From the very start, with version 4.70, SHLWAPI provides numerous functions for string handling. Especially among the originals, many mimic familiar functionality from the C Run-Time (CRT) Library. This may seem inconsequential, but remember that when SHLWAPI was introduced, users measured their physical RAM in single digits that counted mere megabytes. It was in nobody’s interests either to have these functions coded into multiple modules by static linking or to load the whole of the CRT Library’s DLL just for its string functions.

The set has expanded in fits and starts. In the list below, a version shown in parentheses after a function is the first that is known to export the function. Where no version is shown, the function is original, i.e., from version 4.70, and many of these have an even earlier history as functions exported from COMCTL32.DLL or SHELL32.DLL or both.

Almost all the string functions are documented, and have long been. However, documentation was not immediate, certainly not as soon as the January 1997 edition of the MSDN Library on CD. The article A Programmer’s Perspective on New System DLL Features in Windows NT 5.0, Part II, from Microsoft Systems Journal in December 1997, speaks of the functions as new, though the originals were by then at least a year old in public releases of SHLWAPI and even older in COMCTL32 and SHELL32. Note also that Microsoft’s documentation maintains, to this day, that the originals date only from version 4.71.

As usual, recent additions tend not to be documented. Functions that are not documented in the January 2007 edition of the Software Development Kit (SDK) for Windows Vista are highlighted yellow. The two functions that are shaded yellow were not yet documented in an earlier reference version, namely the January 2004 edition of the MSDN Library on CD, but have been documented since.