user32: Make message test pass cleanly under XP SP2

Anatoly Lyutin vostok at etersoft.ru
Tue Sep 25 06:26:24 CDT 2007


Dmitry Timoshkov wrote:
> Hello,
>
> Changelog:
>     user32: Make message test pass cleanly under XP SP2.
>
> ---
>  dlls/user32/tests/msg.c |  142 +++++++++++++++++++++++++++++++++-------------
>  1 files changed, 102 insertions(+), 40 deletions(-)
>
>
>  
> @@ -224,51 +226,53 @@ static const struct message WmSwitchChild[] = {
>      /* Switch MDI child */
>      { WM_MDIACTIVATE, sent },/* in the MDI client */
>      { WM_WINDOWPOSCHANGING, sent|wparam,SWP_NOSIZE|SWP_NOMOVE },/* in the 1st MDI child */
> +    { EVENT_OBJECT_REORDER, winevent_hook|wparam|lparam, OBJID_CLIENT, 0 },
>      { WM_CHILDACTIVATE, sent },/* in the 1st MDI child */
>      /* Deactivate 2nd MDI child */
> -    { WM_NCACTIVATE, sent|defwinproc|optional },/* in the 2nd MDI child */
> -    { WM_MDIACTIVATE, sent|defwinproc|optional },/* in the 2nd MDI child */
> -    { WM_CREATE, hook },
> +    { WM_NCACTIVATE, sent|wparam|defwinproc, 0 }, /* in the 2nd MDI child */
> +    { WM_MDIACTIVATE, sent|defwinproc }, /* in the 2nd MDI child */
> +    { HCBT_MINMAX, hook|lparam, 0, SW_MAXIMIZE },
>      /* Preparing for maximize and maximaze the 1st MDI child */
> -    { WM_GETMINMAXINFO, sent|defwinproc|optional },/* in the 1st MDI child */
> -    { WM_WINDOWPOSCHANGING, sent|wparam|defwinproc|optional, SWP_FRAMECHANGED|SWP_STATECHANGED },/* in the 1st MDI child */
> -    { WM_GETMINMAXINFO, sent|defwinproc|optional },/* in the 1st MDI child */
> -    { WM_NCCALCSIZE, sent|wparam|defwinproc|optional, 1 },/* in the 1st MDI child */
> -    { WM_CHILDACTIVATE, sent|defwinproc|optional },/* in the 1st MDI child */
> -    { WM_WINDOWPOSCHANGED, sent|defwinproc|optional },/* in the 1st MDI child */
> -    { WM_MOVE, sent|defwinproc|optional },/* in the 1st MDI child */
> -    { WM_SIZE, sent|defwinproc|optional },/* in the 1st MDI child */
> +    { WM_GETMINMAXINFO, sent|defwinproc }, /* in the 1st MDI child */
> +    { WM_WINDOWPOSCHANGING, sent|wparam|defwinproc, SWP_FRAMECHANGED|SWP_STATECHANGED }, /* in the 1st MDI child */
> +    { WM_NCCALCSIZE, sent|wparam|defwinproc, 1 }, /* in the 1st MDI child */
> +    { WM_CHILDACTIVATE, sent|defwinproc }, /* in the 1st MDI child */
> +    { WM_WINDOWPOSCHANGED, sent|wparam|defwinproc, SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE|0x8000 }, /* in the 1st MDI child */
> +    { WM_SIZE, sent|defwinproc|wparam, SIZE_MAXIMIZED }, /* in the 1st MDI child */
>      /* Lock redraw 2nd MDI child */
> -    { WM_SETREDRAW, sent|defwinproc|optional },/* in the 2nd MDI child */
> -    { WM_WINDOWPOSCHANGING, sent|wparam|defwinproc|optional, SWP_FRAMECHANGED|SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE },/* in the 2nd MDI child */
> -    { WM_NCCALCSIZE, sent|wparam|defwinproc|optional, 1 },/* in the 2nd MDI child */
> -    { WM_WINDOWPOSCHANGED, sent|defwinproc|optional },/* in the 2nd MDI child */
> -    { WM_CREATE, hook },
> +    { WM_SETREDRAW, sent|wparam|defwinproc, 0 }, /* in the 2nd MDI child */
> +    { HCBT_MINMAX, hook|lparam, 0, SW_NORMALNA },
>      /* Restore 2nd MDI child */
> -    { WM_WINDOWPOSCHANGING, sent|wparam|defwinproc|optional, SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_SHOWWINDOW|SWP_STATECHANGED  },/* in the 2nd MDI child */
> -    { WM_GETMINMAXINFO, sent|defwinproc|optional },/* in the 2nd MDI child */
> -    { WM_NCCALCSIZE, sent|wparam|defwinproc|optional, 1 },/* in the 2nd MDI child */
> -    { WM_WINDOWPOSCHANGED, sent|defwinproc|optional },/* in the 2nd MDI child */
> -    { WM_MOVE, sent|defwinproc|optional },/* in the 2nd MDI child */
> -    { WM_SIZE, sent|defwinproc|optional },/* in the 2nd MDI child */
> +    { WM_WINDOWPOSCHANGING, sent|wparam|defwinproc, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_FRAMECHANGED|0x8000 },/* in the 2nd MDI child */
> +    { WM_NCCALCSIZE, sent|wparam|defwinproc, 1 },/* in the 2nd MDI child */
> +    { EVENT_OBJECT_SHOW, winevent_hook|wparam|lparam, 0, 0 }, /* in the 2nd MDI child */
> +    { WM_WINDOWPOSCHANGED, sent|wparam|defwinproc, SWP_SHOWWINDOW|SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE|0x8000 }, /* in the 2nd MDI child */
> +    { WM_SIZE, sent|defwinproc|wparam, SIZE_RESTORED }, /* in the 2nd MDI child */
> +    { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, /* in the 2nd MDI child */
>      /* Redraw 2nd MDI child */
> -    { WM_SETREDRAW, sent|defwinproc|optional },/* in the 2nd MDI child */
> -    { WM_WINDOWPOSCHANGING, sent|wparam, SWP_NOACTIVATE|SWP_NOSIZE|SWP_FRAMECHANGED|SWP_NOMOVE },/* in the MDI frame */
> -    { WM_NCCALCSIZE, sent|wparam, 1 },/* in the MDI frame */
> -    { WM_WINDOWPOSCHANGED, sent},/* in the MDI frame */
> -    { WM_WINDOWPOSCHANGING, sent|wparam|defwinproc|optional, SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE },/* in the 1st MDI child */
> -    { WM_NCACTIVATE, sent|wparam|defwinproc|optional, 1 },/* in the 1st MDI child */
> -    { WM_SETVISIBLE, hook },
> -    { WM_KILLFOCUS, sent|defwinproc|optional }, /* in the 2nd MDI child */
> -    { WM_IME_SETCONTEXT, sent|wparam|optional, 0 }, /* in MDI client */
> -    { WM_IME_SETCONTEXT, sent|wparam|optional, 1 },
> +    { WM_SETREDRAW, sent|wparam|defwinproc, 1 },/* in the 2nd MDI child */
> +    /* Redraw MDI frame */
> +    { WM_WINDOWPOSCHANGING, sent|wparam, SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE },/* in MDI frame */
> +    { WM_NCCALCSIZE, sent|wparam, 1 },/* in MDI frame */
> +    { WM_WINDOWPOSCHANGED, sent|wparam, SWP_NOACTIVATE|SWP_FRAMECHANGED|SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE}, /* in MDI frame */
> +    { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, /* in MDI frame */
> +    { EVENT_OBJECT_LOCATIONCHANGE, winevent_hook|wparam|lparam, 0, 0 }, /* in the 1st MDI child */
> +    { WM_WINDOWPOSCHANGING, sent|wparam|defwinproc, SWP_NOACTIVATE|SWP_NOSIZE|SWP_NOMOVE }, /* in the 1st MDI child */
> +    { WM_NCACTIVATE, sent|wparam|defwinproc, 1 }, /* in the 1st MDI child */
> +    { HCBT_SETFOCUS, hook },
> +    { WM_KILLFOCUS, sent|defwinproc }, /* in the 2nd MDI child */
> +    { WM_IME_SETCONTEXT, sent|wparam|defwinproc, 0 },/* in the 1st MDI child */
> +    { WM_IME_SETCONTEXT, sent|wparam, 1 }, /* in MDI client */
>      { EVENT_OBJECT_FOCUS, winevent_hook|wparam|lparam, OBJID_CLIENT, 0 },
>      { WM_SETFOCUS, sent },/* in the MDI client */
> -    { WM_SETVISIBLE, hook },
> +    { HCBT_SETFOCUS, hook },
>      { WM_KILLFOCUS, sent },/* in the MDI client */
> -    { WM_SETFOCUS, sent|defwinproc|optional },/* in the 1st MDI child */
> -    { WM_MDIACTIVATE, sent|defwinproc|optional },/* in the 1st MDI child */
> -    { WM_WINDOWPOSCHANGED, sent },/* in the 1st MDI child */
> +    { WM_IME_SETCONTEXT, sent|wparam, 0 }, /* in MDI client */
> +    { WM_IME_SETCONTEXT, sent|wparam|defwinproc, 1 }, /* in the 1st MDI child */
> +    { EVENT_OBJECT_FOCUS, winevent_hook|wparam|lparam, OBJID_CLIENT, 0 },
> +    { WM_SETFOCUS, sent|defwinproc }, /* in the 1st MDI child */
> +    { WM_MDIACTIVATE, sent|defwinproc },/* in the 1st MDI child */
> +    { WM_WINDOWPOSCHANGED, sent|wparam, SWP_NOSIZE|SWP_NOMOVE|SWP_NOCLIENTSIZE|SWP_NOCLIENTMOVE }, /* in the 1st MDI child */
>      { 0 }
>  };
>  
Sorry! It falls in my Windows XP SP2 with:
msg.c:3267:expected 0009 - actual 0009
msg.c:3267:expected 0008 - actual 0008
msg.c:3267:expected 0281 - actual 0007
msg.c:3267: Test failed: Child did not switch correctly: the msg 0x0281 
was expected, but got msg 0x0007 instead
msg.c:3268:end of test for switch maximized MDI children

-- 
Best regards
	Anatoly Lyutin.




More information about the wine-devel mailing list