Thank you so much for your solutions. I actually tried the WideCharToMultiByte() converter, I am not sure why, but it returned only the first char also.
Well I looked at the returned string and found the entire string was, in fact fully located inside the char rgValue. Obviously due to MS need to support multilingual codesets. I Simply peeled off every other char to reassemble the utf8 string I needed.