[PATCH] user32: on VK_RETURN, send WM_COMMAND to ancestor, not parent.

Lei Zhang thestig at google.com
Wed Apr 9 01:01:59 CDT 2008


On Fri, Apr 4, 2008 at 9:55 PM, Lei Zhang <thestig at google.com> wrote:
>
> On Fri, Apr 4, 2008 at 11:11 AM, Lei Zhang <thestig at google.com> wrote:
>  >
>  > On Fri, Apr 4, 2008 at 9:14 AM, Dmitry Timoshkov <dmitry at codeweavers.com> wrote:
>  >  > "Lei Zhang" <thestig at google.com> wrote:
>  >  >
>  >  >
>  >  > > The edit control is the child of a dialog box bar, which is in turn
>  >  > > the child of another dialog box foo. SetParent() is not involved, if
>  >  > > that's what you mean.
>  >  > >
>  >  >
>  >  >  Seems that's not the case then, from your test it looks more like
>  >  >  a WM_COMMAND forwarding from a child dialog to the parent one.
>  >  >
>  >  >  --
>  >  >  Dmitry.
>  >  >
>  >
>  >  I'm pretty sure the parent dialog is getting the WM_COMMAND directly.
>  >  It is not the case where the child dialog gets a WM_COMMAND, and
>  >  forwards it to its parent.
>  >
>  >  Running the test on Windows, the child dialog gets two WM_COMMANDS -
>  >  EN_SETFOCUS and EN_KILLFOCUS. Then the parent dialog gets WM_COMMAND
>  >  with IDOK.
>  >
>  >  - Lei
>  >
>
>  Ah, this is because the child dialog has the DS_CONTROL style. I
>  should test for that and handle it appropriately.
>
>  - Lei
>

I thought maybe the DS_CONTROL style caused the message to get
propagated up, like in DIALOG_FindMsgDestination(). So I did more
tests.

I removed the DS_CONTROL style, but that didn't change the result of
the test. I also tried something more elaborate, where we have a
series of dialog windows, each of which contains another dialog
window... until the last one which contains the edit control. When I
send the edit control the VK_RETURN, the top most dialog window gets
the WM_COMMAND with wparam=IDOK. None of the dialog boxes between the
edit control and its ancestor gets the WM_COMMAND msg.



More information about the wine-devel mailing list