All of the string functions listed in this section exist in ANSI and Unicode implementations to support ANSI and Unicode arguments. There are, however, subtle differences among some of them.
The following string functions do not require special comment; their ANSI and Unicode implementations work identically.
CharNext
CharPrev
lstrcat
lstrcpy
lstrlen
The value returned by the lstrlen function is always the number of characters, regardless of whether the ANSI or Unicode form is used.
The following string functions are sensitive to the locale of the current thread (as derived from the locale the user selects in Control Panel). The lstrcmp and lstrcmpi functions do not perform byte comparisons like their ANSI C namesakes; they compare strings according to the rules of the selected locale.
CharLower
CharLowerBuff
CharUpper
CharUpperBuff
lstrcmp
lstrcmpi
The following functions convert between the OEM character set and either ANSI or Unicode, depending on which version is used.
CharToOem
CharToOemBuff
OemToChar
OemToCharBuff
The print function wsprintf supports Unicode by providing the following new and changed data types in its format specifications. These format specifications affect the way the wsprintf function interprets the corresponding passed-in parameter.
Format specification | ANSI version | Unicode version |
c | CHAR | WCHAR |
C | WCHAR | CHAR |
hc, hC | CHAR | CHAR |
hs, hS | LPSTR | LPSTR |
lc, lC | WCHAR | WCHAR |
ls, lS | LPWSTR | LPWSTR |
s | LPSTR | LPWSTR |
S | LPWSTR | LPSTR |
The data type for the output text always depends on the version of the function. Where the data type of the passed-in parameter and of the output text do not agree, wsprintf will perform a conversion from Unicode to ANSI, or vice versa, as required.
For the Unicode version of wsprintf, the format string is Unicode, as is the output text.