Hi, I'm a recent adopter of wine, running distribution wine-20020804 on Red Hat 7.1. One of my favorite apps that used to work on wine was recently upgraded, and now it doesn't work anymore. Using winedbg and following the tips on the winehq website, I was able to track the (first) problem down to an unimplemented function, user32.dll.GetCursorInfo. I include the diffs for the two files that I changed to implement it for your evaluation, and hopefully inclusion in the code tree. Unfortunately, I'm now getting a new unimplemented function error, and this time it's for kernel32.dll.Heap32ListFirst. I see in the kernel32.spec file that none of the Heap32* functions have been implemented, and I'm really not sure where to start with it. I would like to help in any way I can, but this looks a lot more complicated than my first project. If anyone has done preliminary work on it, I'd really like to know about it; I've already searched the bug database and found nothing in there. At the very least, can we add it to the tasklets or tasklist so that it has visibility? Thanks and regards, Per Nystrom -- "When cryptography is outlawed, bayl bhgynjf jvyy unir cevinpl."
--- dlls/user/user32.spec.orig Wed Jul 10 16:20:49 2002 +++ dlls/user/user32.spec Wed Aug 28 02:01:48 2002 @@ -227,7 +227,7 @@ @ stdcall GetClipboardOwner() GetClipboardOwner @ stdcall GetClipboardViewer() GetClipboardViewer @ stdcall GetCursor() GetCursor -@ stub GetCursorInfo +@ stdcall GetCursorInfo (ptr) GetCursorInfo @ stdcall GetCursorPos(ptr) GetCursorPos @ stdcall GetDC(long) GetDC @ stdcall GetDCEx(long long long) GetDCEx
--- windows/input.c.orig Fri May 31 16:06:54 2002 +++ windows/input.c Wed Aug 28 01:03:03 2002 @@ -75,6 +75,17 @@ } KEYLP; +/* Should be in windef.h, but clashes with poor implementation in display.c */ +/* The CURSORINFO structure */ +typedef struct +{ + DWORD cbSize; + DWORD flags; + HCURSOR hCursor; + POINT ptScreenPos; +} CURSORINFO, *PCURSORINFO, *LPCURSORINFO; + + /*********************************************************************** * get_key_state */ @@ -472,6 +483,17 @@ pt->x = PosX; pt->y = PosY; if (USER_Driver.pGetCursorPos) USER_Driver.pGetCursorPos( pt ); + return 1; +} + + +/*********************************************************************** + * GetCursorInfo (USER32.@) + */ +BOOL WINAPI GetCursorInfo( PCURSORINFO pci ) +{ + if (!pci) return 0; + GetCursorPos(&pci->ptScreenPos); return 1; }