If this person is to be believed, all string interactions with DLLs convert VB’s internal Unicode representations to ANSI at the interaction layer.
Note that this means that “As String” in “Public Declare…Lib…” means char*, which does not mean the same thing as “As String” at function/module/class scope - Unicode string.
“Classic VB - Does Visual Basic 6 support Unicode?”
Yes and no. For yes, VB strings can hold 16-bit characters and is thus Unicode compatible. The problems come from several directions:
Strings passed to API are converted to ANSI and vice versa
Reading a file to a string is done by automatically converting ANSI to Unicode
The same applies when saving: string is converted to ANSI
Visual Basic controls are not Unicode aware
Luckily we have byte arrays to help us with the reading and writing business: they are easy to convert to strings and string contents can be copied to byte arrays easily with native VB code. Thus when working with Unicode, a byte array is your best bet.