Automatic ANSI<>Unicode message translation

Dmitry Timoshkov dmitry at baikal.ru
Tue Jul 26 02:56:31 CDT 2005


"Phil Krylov" <phil at newstar.rinet.ru> wrote:

> > One solution is to translate the whole wparam.
> 
> How do you see it? Example: I do a
> 
>  PostMessageA(hwndAnsi, WM_CHAR, 0xF301, 0);
> 
> map_wparam_AtoW takes the "\x01\xF3" string, translates it to Unicode via
> CP_ACP (for CP1251, this would be probably {'\x01', 0x443})... and how
> does it fit this info back in LOWORD(wParam)?

The key word is "the whole" wparam. So, there is no need to truncate it
by using LOWORD.

> > > AFAIK in DBCS two separate messages are used.
> > 
> > A test under Windows would say it for sure.
> 
> I can't test it as I don't have a Windows with DBCS locales installed,

Just install one of such locales then, NT/2k/XP have built-in support
for DBCS locales.

> but 
> Internet says:
> 
> > When entering non-ASCII characters on systems with DBCS input
> locales, the lead byte and trail byte for the DBCS character are passed
> in two successive WM_CHAR messages. So we are better off processing
> WM_IME_CHAR messages because we get both bytes at once. If we move to
> Unicode, however, we'll directly get UTF-16 in WM_CHAR; or on XP: UTF-32
> in WM_UNICHAR.

Again, without a test we can't tell for sure what happens in reality.

-- 
Dmitry.




More information about the wine-devel mailing list