If you're using WinAPI, you have to use UCS-16. Converting strings for every call would be abysmal to performance.
Of the functions that take strings, the old ...A() versions should never be called anyway since they depend on the obsolete concept of code pages. The proper way to work with strings on Windows (IMHO) is to encode all string data to UTF-8, only encode/decode from/to UCS-2 when needed, and call the ...W() functions explicitely (don't use the global UNICODE define).
Also see: http://utf8everywhere.org/