"Troy Rollo" wine@troy.rollo.name wrote:
I have just finished running a series of tests using the attached programs - msgchar, msgchar2 and msgchar3.
- The short version:
WM_CHAR messages are delivered "immediately" whether sent by SendMessage or PostMessage.
Actually not immediately, just fast enough, so that GetMessage/DispatchMessage delivers a message while the thread does Sleep.
[skipped]
When using SendMessageA to send WM_CHAR to a window registered with RegisterClassA, no conversion is performed even if the threads have different values for CP_THREAD_ACP.
In other words, where a conversion is performed it is always based on the modified CP1252, which has the effect that no visible conversion is ever performed for A->A messages.
That just means that your way of changing system locale using SetCPGlobal doesn't work (not mentioning that it's quite strange to call an API in a DLL after FreeLibrary, that works because kernel32 is already loaded before LoadLibrary).
I skipped everything else since the tests apparently do not run on a proper (or rather expected) locale, and the results basically show what you would get on an english locale without SetCPGlobal hacks.