Still the same problem.
> I get the string with the unicode version of GetStringW
LoadStringW will probably return one word-sized zero delimiter...
Can you post the relevant lines of code? Here is a test piece.
include \masm32\include\masm32rt.inc
.data
buffer db "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX", 0
.code
start:
mov esi, offset buffer
invoke LoadStringW, rv(GetModuleHandle, 0), 1, esi, sizeof buffer
push esi
.Repeat
lodsb
.if !al
mov byte ptr [esi-1], "_"
.endif
.Until al=="X"
pop esi
invoke MessageBox, 0, esi, 0, MB_OK
exit
end start
STRINGTABLE
BEGIN
001, "All files\0*.*\0\0\0\0\0\0\0\0\0\0\0\0"
END
IMHO it's a big fat bug in LoadString's way to handle C character escapes. Can be "healed" with and dword ptr [esi+2*eax], 0 directly after the LoadStringW invoke.