TreeView & WM_NOTIFY
Igor Grahek
igorg at cadlink.com
Fri Sep 5 15:49:40 CDT 2003
It looks like comctl32.dll is seting up some hooks to forward messages
to requested window because even if you use --dll comctl32=n the owner
is set up to "GetAncestor( cs->hwndParent, GA_ROOT )" Same thing
happends under Windows so it seems that everything is OK with
windows/win.c
I tried to figure out what is going on with hooks but I don't have much
experience with windows hooks so I will appreciate any help.
Thanks,
Igor
> -----Original Message-----
> From: Igor Grahek [mailto:igorg at cadlink.com]
> Sent: September 5, 2003 11:29 AM
> To: 'wine-devel at winehq.org'
> Subject: RE: TreeView & WM_NOTIFY
>
>
> Here is an example in attachment (Visual C++ project) .
> If you click on "tst" button it opens TreeView control with
> WS_POPUP and Cview as parent (to process WM_NOTIFY messages)
> With current code in windows/win.c owner is set to
> "GetAncestor( cs->hwndParent, GA_ROOT )" and WM_NOTIFY goes
> to wrong window. If I change code so that owner is
> "WIN_GetFullHandle(cs->hwndParent)" then there is problem
> with Z ordering (keeping popup window on top) but WM_NOTIFY
> goes to Cview as it should.
>
> However if I use --dll comctl32=n and owner is set to
> "GetAncestor( cs->hwndParent, GA_ROOT )" everything works OK
> - popup is on top and CView receives WM_NOTIFY from it.
>
> I know I'm repeating myself but I'm not sure where I should
> look for the problem: is it in dll/comctl32/treeview.c (as
> --dll comctl32=n suggesting) or is it in windows/win.c and
> dll/x11drv/* ?
>
> Igor
>
> > -----Original Message-----
> > From: Igor Grahek [mailto:igorg at cadlink.com]
> > Sent: September 4, 2003 1:50 PM
> > To: 'Dimitrie O. Paun'
> > Cc: 'wine-devel at winehq.org'
> > Subject: RE: TreeView & WM_NOTIFY
> >
> >
> > I think I found the source of my problem:
> > -------------
> > Wine/windows/win.c ::CreateWindowEx
> >
> > if ((cs->style & (WS_CHILD|WS_POPUP)) == WS_CHILD)
> > parent = WIN_GetFullHandle(cs->hwndParent);
> > else
> > owner = GetAncestor( cs->hwndParent, GA_ROOT );
> > --------------------------
> > Why owner is not set to "WIN_GetFullHandle(cs->hwndParent)" ?
> >
> > If I change this everything works OK except there is a
> > problem with Z ordering (it is hiding popup window behind its
> > owner when Managed=N) Is the source of problem somewhere in
> > wine/dll/x11drv/winpos.c (I'm currently examining
> > SWP_DoOwnedPopups function) and why it is working with --dll
> > comctl32=n - no problems with Z order there?!
> >
> > BTW I'm working with 20030618 build.
> >
> > Igor
> >
> > > -----Original Message-----
> > > From: Dimitrie O. Paun [mailto:dimi at intelliware.ca]
> > > Sent: September 2, 2003 6:42 PM
> > > To: Igor Grahek
> > > Cc: wine-devel at winehq.org
> > > Subject: Re: TreeView & WM_NOTIFY
> > >
> > >
> > > On Tue, 2 Sep 2003, Igor Grahek wrote:
> > >
> > > > My problem is very similar to bug 1227
> > > > (http://bugs.winehq.org/show_bug.cgi?id=1227)
> > > > Treeview in application is sending WM_NOTIFY on double
> > > click (NM_DBLCLK)
> > > > to the wrong
> > > > Window handle. GetParent() function returns handle to the
> > > root window
> > > > and root window is not forwarding/broadcasting that message
> > > and message
> > > > is lost. Everything works fine under Windows
> > > > or with --dll comctl32=n
> > >
> > > I'm afraid you'll need to debug this and post a lot more
> > detail, maybe
> > > a code fragment showing the undesirable behaviour.
> > >
> > > --
> > > Dimi.
> > >
> > >
> >
>
More information about the wine-devel
mailing list