[PATCH2+TEST] RE: user32: Problem using SetClassLongW to subclass built-in control (Edit)
Rob Shearman
robertshearman at gmail.com
Mon Jul 14 06:43:28 CDT 2008
2008/7/14 Hongbo Ni <hongbo_ni at hotmail.com>:
>
> Now I have fixed the problem, or corrected to window behaviour. Included is
> the Patch, Test and Debug (play with windows). Can anyone please test or comment ?
>
> Regards
> Hongbo Ni
>
> ==============================================================================
> # 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
More information about the wine-devel
mailing list