"Andreas Rosenberg" sonix2003@ctf-z.de wrote:
From time to time I'm testing our application (IQ-FMEA) with Wine.
Our GUI framework is checking the return codes of most API calls, so several incompatibilities between Windows and Wine are detected while many other programs simply ignore them.
So I found several things that differ between Wine & Windows.
Many thanks for reporting this bugs! Please continue reporting anything you find that might prevent your apps to work correctly under Wine.
############################# 1.)
If found out that InvalidateRect with a "zero extent rectangle" returns FALSE with Wine, while it returns TRUE in Windows. Wine builds from last year did not show this behavior.
Windows: InvalidateRect(hwnd, RECT(10,10,10,15), TRUE); returns TRUE;
Wine InvalidateRect(hwnd, RECT(10,10,10,15), TRUE); returns FALSE;
A fix for this bug has been committed to CVS.
#################### 2.)
Then I discovered an incompatibility with LB_SELITEMRANGE:
SendMessage(hWndControl,LB_SELITEMRANGE,TRUE, MAKELPARAM(wFirst, wLast));
Windows accepts values for wLast that are greater than the list size and performs the operation with the (internally corrected) value - returning TRUE.
Wine does not accept a value for wLast if it is greater than the list size and returns FALSE (not performing the select operation, which caused subsequent failures in our application).
I just sent a patch to wine-patches which should fix this bug.
#################### 3.) There is also a different behavior of SetCapture(hWnd) in Wine. If an overlapped window has captured the mouse input and a new child window is being openend, Windows internally releases the capture. Wine maintains the capture - dialogs in our application may not be operated with the mouse, because the parent still gets all the mouse messages.
Could you please send a small test app demonstrating this behaviour?