http://bugs.winehq.org/show_bug.cgi?id=33558
Bug #: 33558 Summary: WinEventHook receive no event notify about OBJID_CURSOR Product: Wine Version: 1.5.29 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: user32 AssignedTo: wine-bugs@winehq.org ReportedBy: orzhvs@gmail.com Classification: Unclassified
Created attachment 44418 --> http://bugs.winehq.org/attachment.cgi?id=44418 WINEDEBUG=+relay,+user32,+hook LANG='zh_CN.utf-8' wine /usr/local/vboxvm/vmshare/magnify/magnify.exe 2>&1 |grep -iE Win.*Event > out.txt
There's a method to track mouse move by setting a WinEvent hook: call SetWinEventHook with eventMin=eventMax=EVENT_OBJECT_LOCATIONCHANGE(=0x800B) and provide a WinEventProc WinEventProc will be notified with event=EVENT_OBJECT_LOCATIONCHANGE in case idObject=OBJID_CURSOR we know that mouse moved, then get cursor object by AccessibleObjectFromEvent and further information like the location of the cursor. But the fact is, no event with idObject=OBJID_CURSOR is sent in wine.
This is used in windows's zoom-in utility, it does not update frames with mouse move in wine. To reproduce : 1. copy 'magnify.exe' 'mag_hook.dll' 'mfc42u.dll' from system32 directory of windows, I used them from xpsp3. 2. run magnify.exe in wine 3. move mouse in and out the dialog, you will find the zoomed-in view updates almost only when mouse is inside the dialog.
Note that we see frames update when mouse is inside the dialog, it's triggered from WM_MOUESMOVE, there's no business of WinEvent, but when mouse is outside there should be. I saw several SetWinEvent calls successfully in log but no event notify.