Holy cow, I wrote a book!
Commenter Chris Becke asks
how the common controls convert ANSI parameters to Unicode,
since the common controls are Unicode internally.
Everything goes through CP_ACP,
pretty much by definition.
The ANSI code page is CP_ACP.
That's what ACP stands for, after all.
Now, there are some function families that do not use ANSI.
The console subsystem, for example, prefers the OEM character set
for its 8-bit strings,
and file system functions can go either way,
based on the
setting controlled by the SetFileAPIsToANSI and
In the scenario Chris describes, I suspect that the problem
is not the ANSI-to-Unicode conversion but rather that the
font selected into the listview didn't support the necessary