WM_GETTEXTLENGTH returns double size

Andriy Palamarchuk apa3a at yahoo.com
Wed Jun 12 07:02:51 CDT 2002


This happens in code which unmaps message, mapped from
ASCII to Unicode.
See windows/winproc.c, function
WINPROC_UnmapMsg32ATo32W:

    case WM_GETTEXTLENGTH:
    case CB_GETLBTEXTLEN:
    case LB_GETTEXTLEN:
        /* there may be one DBCS char for each Unicode
char */
        return result * 2;

What is the correct way to handle double-byte
characters in this situation?
How Windows handles this?
At least can we return double values when system
metrics SM_DBCSENABLED is true? We could have a switch
in the config file for this system metrics.

I came across this issue when used default combo box
control implementation in Delphi 6.
I assume the same issue also exists for edit controls.
The returned length is correct if I comment out the
code above.

Existing behavior is a possible cause of bug in
entering serial numbers - when
cursor jumps to the next edit field when only half of
text is entered.

Thanks,
Andriy

__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com



More information about the wine-devel mailing list