ToUnicode
and ToUnicodeEx
are both wrappers around NtUserToUnicodeEx
and yes, the only difference is the final parameter which is NULL for ToUnicode
and user-supplied for ToUnicodeEx
.
Because dead keys are used to generate characters from multiple separate key presses the OS has to keep a history of which dead keys were previously pressed. I think all that note is warning you is that ToUnicodeEx
and TranslateMessage
both use the same history - so mixing calls to the two functions could generate unreliable results.