> > ==============================================================================>
> > > # Patch> >
> > ==============================================================================>
> > > --- wine-1.1.1-orig/dlls/user32/win.c 2008-07-12 01:55:55.000000000
> > +1000> > +++ wine-1.1.1/dlls/user32/win.c 2008-07-14 16:49:21.000000000
> > +1000> > @@ -173,6 +173,13 @@ static WND *create_window_handle( HWND p> >
> > win->owner = full_owner;> > win->class = class;> > win->winproc =
> > get_class_winproc( class );> > + /* This is a window hack - When builtin
> > Edit class has been subclassed by SetClassLong(Ptr)W */> > + /* If creating
> > ansi Edit window & the class does not have a ansi proc, use unicode proc as
> > ansi */> > + if(!unicode && !IS_INTRESOURCE(name) && !strcmpiW( name,
> > EDIT_builtin_class.name )> > + && WINPROC_IsUnicode( win->winproc, 0 ) &&
> > WINPROC_IsUnicode( win->winproc, 1 ))> > + {> > + win->winproc =
> > WINPROC_AllocProc((WNDPROC)WINPROC_GetProc( win->winproc, 1 ), NULL);> > +
> > }> > It doesn't seem likely that this behaviour just applies to edit>
> > controls. More likely, it applies to all builtin classes.> > -- > Rob
> > Shearman
Yes you are right, this behaviour applies to all builtin classes. I can either
1. add more strcmpiW to compare with all the class names,
This can slow down create_window_handle() a little bit.
or
2. prove that there is no need for other builtin classes.
The major difference before Edit and other builtin controls is: the Text in
other builtin control does
not interact with user, the WM_SETTEXT message do A->W conversion,
WM_GETTEXT do a
W->A conversion, it can get same string back. so current wine can handle it.
The Edit control interact with user and input system, W->A conversion of
SendMessageA(WM_GETTEXT)
will not get eact the same string as user entered (eg CJK text). So if we
create a Ansi Edit window, we do
not want W->A conversion. That is why my patch is needed to make Edit window
a Ansi window.
So what do you think we should do?
Regards
Hongbo
_________________________________________________________________
It's simple! Sell your car for just $40 at CarPoint.com.au
http://a.ninemsn.com.au/b.aspx?URL=http%3A%2F%2Fsecure%2Dau%2Eimrworldwide%2Ecom%2Fcgi%2Dbin%2Fa%2Fci%5F450304%2Fet%5F2%2Fcg%5F801459%2Fpi%5F1004813%2Fai%5F859641&_t=762955845&_r=tig_OCT07&_m=EXT