Debugging mouse messages

Mike Hearn m.hearn at signal.qinetiq.com
Fri Nov 22 09:09:29 CST 2002


Well, I'm feeling rather pleased with myself, I found one of the bugs :)

line 970 of windows/input.c is this:

    PostMessageA(TrackingList[i].tme.hwndTrack, WM_MOUSEHOVER, 0, 0);

when it should actually be 

    PostMessageA(TrackingList[i].tme.hwndTrack, WM_MOUSEHOVER, 0, (pos.y
<< 8) + (pos.x));

That doesn't supply the keyboard state correctly of course, which should
be in wParam, but i don't know if I'll be able to fix it all, especially
as ASV seems to have suddenly got a lot more choosy about when it'll
render things.

On Fri, 2002-11-22 at 14:09, Mike Hearn wrote:
> Yes, I looked using Spy++ in Windows and it gets the WM_MOUSEHOVER
> messages, the log looks like this:
> 
> <00010> 00080288 P WM_MOUSEHOVER wParam:00000000 lParam:00C20034
> point:(64, 350)
> <00011> 00080288 P message:0x0118 [Unknown] wParam:0000FFFA
> lParam:BF87ACAB point:(64, 350)
> 
> I don't really know how to read Spy++ traces, is the second message an
> undocumented one or something?
> 
> Does Spy++ work under Wine? I'd guess probably not, but being able to
> restrict messages traces to particular windows (or sub windows) is
> really useful.
> 
> thanks -mike
> 
> On Fri, 2002-11-22 at 12:22, Fabian Cenedese wrote:
> > >I can't figure out why I am getting this:
> > >
> > >trace:msg:MSG_peek_message got type 5 msg 113 hwnd 0 wp 8 lp 41380d58
> > >trace:cursor:X11DRV_GetCursorPos pointer at (661,442)
> > >trace:msg:MSG_peek_message got type 5 msg 2a1 hwnd 10042 wp 0 lp 0
> > >trace:msg:GetKeyState key (0x12) -> 0
> > >trace:msg:WINPROC_CallProc32ATo32W func 0x413e9024
> > >(hwnd=00010039,msg=WM_USER+000b,wp=00000000,lp=00000000)
> > >
> > >over and over again when the mouse is not moving. It appears that IE
> > >(the constant polling for the cursor position occurs when showing a 404
> > >screen too) has different mouse behaviour to other apps, for instance in
> > >WebFerret the X11DRIV_GetCursorPos function is only called when the
> > >mouse actually moves. In IE, it's called seemingly on a timer (i'd guess
> > >every .25 or .5 seconds) even when the cursor is over a toolbar (though
> > >not the address bar oddly).
> > 
> > If you look with Spy++ in Windows do you get the same? If not it's not
> > IE itself but the combined behaviour of IE and Wine, each one retriggering
> > somehow the other because of a different message behaviour. I also had to
> > change my app as wine handled and sent some messages differently
> > (different order of messages, different count...) which got me into a recursion
> > that didn't happen on Windows. Of course I should have fixed wine. But as
> > I'm not a message guru (and no one could help me) I had to change my app.
> > 
> > bye  Fabi
> > 
> > 
-- 
Mike Hearn <m.hearn at signal.qinetiq.com>
QinetiQ




More information about the wine-devel mailing list