Drawing problems with ControlSpy

Guy L. Albertelli galberte at neo.lrun.com
Wed Jun 13 22:46:11 CDT 2001


With today's CVS (last patch was "wine/ dlls/gdi/wing.c dlls/kernel/comm.c
dlls/ ..."), the following problems exist in the ControSpy (REBAR) test
program:

Problem #1. Using native version of "commctrl,comctl32", get the following
fault:

/home/albertel/t1/wine/wine -managed -winver win95 -dll commctrl,comctl32=n
G:\Rdhat\test-pgm\controls\rebar.exe
Could not stat /mnt/winflp (No such file or directory), ignoring drive A:
fixme:pthread_kill_other_threads_np
Could not stat /mnt/winflp (No such file or directory), ignoring drive A:
WineDbg starting...  on pid 8064ef0
......
Unhandled exception: page fault on read access to 0x00000067
 in 32-bit code (0x40894f24).
In 32-bit mode.
Symbol h_errno is invalid
Symbol hack_digit is invalid
0x40894f24 (clip_children+0x24 [winpos.c:70] in libx11drv.so): testb
$0x10,0x67(%esi)
70         if (ptr->dwStyle & WS_VISIBLE) break;
Wine-dbg>bt
Backtrace:
=>0 0x40894f24 (clip_children+0x24(win=0x403732dc, last=0x40373370,
hrgn=0xa22, whole_window=0x0) [winpos.c:70] in libx11drv.so) (ebp=40586564)
  1 0x4089511e (get_visible_region+0x14e(win=0x40373370, top=0x403732dc,
flags=0x1001a, mode=0x1) [winpos.c:144] in libx11drv.so) (ebp=405865a4)
  2 0x408952ec (X11DRV_GetDC+0x1a8(hwnd=0x1908, hdc=0x88, hrgn=0x0,
flags=0x1001a) [winpos.c:229] in libx11drv.so) (ebp=405865e8)
  3 0x406874bc (GetDCEx+0x29c(hwnd=0x1908, hrgnClip=0x0, flags=0x10000)
[dce.c:531] in libuser32.so) (ebp=40586620)
  4 0x4068755c (GetDC+0x2c(hwnd=0x1908) [dce.c:561] in libuser32.so)
(ebp=40586638)
  5 0xbfb9a055 (COMCTL32.DLL.InitCommonControlsEx+0x4137 in
C:\WINDOWS\SYSTEM\COMCTL32.DLL) (ebp=40586694)
  6 0xbfb9a037 (COMCTL32.DLL.InitCommonControlsEx+0x4119 in
C:\WINDOWS\SYSTEM\COMCTL32.DLL) (ebp=405867fc)
  7 0xbfb94e38 (COMCTL32.DLL.ImageList_GetIconSize+0x558 in
C:\WINDOWS\SYSTEM\COMCTL32.DLL) (ebp=40586854)
  8 0x406b24a7 (WINPROC_wrapper+0x17 in libuser32.so) (ebp=40586878)
  9 0x406b2520 (WINPROC_CallWndProc+0x70(proc=0xbfb94a89, hwnd=0x1908,
msg=0x81, wParam=0x0, lParam=0x40586b10) [winproc.c:171] in libuser32.so)
(ebp=405868a0)

The following patch bypasses the tests:

--- wine/dlls/x11drv/winpos.c Wed Jun 13 20:03:34 2001
+++ mywine/dlls/x11drv/winpos.c Wed Jun 13 22:59:18 2001
@@ -65,6 +65,9 @@
     HRGN rectRgn;
     int x, y;

+    /* if no children then nothing to do */
+    if (!win->child) return;
+
     /* first check if we have anything to do */
     for (ptr = win->child; ptr != last; ptr = ptr->next)
         if (ptr->dwStyle & WS_VISIBLE) break;


Problem # 2.  With above patch and still using native comctl32 get the
following:

/home/albertel/t1/mywine/wine -managed -winver win95 -dll
commctrl,comctl32=n G:\Rdhat\test-pgm\controls\rebar.exe
Could not stat /mnt/winflp (No such file or directory), ignoring drive A:
err:region:CombineRgn Invalid rgn=0000
err:region:CombineRgn Invalid rgn=0000
err:region:CombineRgn Invalid rgn=0000
err:region:CombineRgn Invalid rgn=0000
err:region:CombineRgn Invalid rgn=0000
err:region:CombineRgn Invalid rgn=0000
err:x11drv:X11DRV_SetDeviceClipping Rgn is 0. Please report this.
##normal exit from wine##

Problem # 3. Still with native comctl32. With more than 1 band in a row,
when you drag a band from left to right,  the band being uncovered is not
fully repainted (suspect InvalidateRect too small). This is especially
visible if the band being dragged is a different color. It is also sensitive
to the speed of the drag. Attached is a control file to create different
color bands in a row.

If you need any more information, let me know what. I will be doing more
work tomorrow night.

Thanks,

Guy
-------------- next part --------------
MSG (RB_DELETEBAND,
1,
0);

MSG (RB_INSERTBAND,
-1,
REBARBANDINFO(
rbbisize,
RBBIM_COLORS,
0,
RGB(255,255,0),
RGB(128,0,0),
"",
0,0,0,0,0,
50,                   // cx
0,0,0,0,0,0,0,0));

MSG (RB_INSERTBAND,
-1,
REBARBANDINFO(
rbbisize,
RBBIM_STYLE|RBBIM_CHILD|RBBIM_TEXT|RBBIM_CHILDSIZE|RBBIM_SIZE,
RBBS_GRIPPERALWAYS,
RGB(0,0,0),
RGB(0,0,0),
"Address",
7,0,comboboxex,
0,
25,                    // cyMinChild
190,                   // cx
0,0,0,0,0,0,0,0));

MSG (RB_INSERTBAND,
-1,
REBARBANDINFO(
rbbisize,
RBBIM_COLORS,
0,
RGB(255,255,0),
RGB(0,0,128),
"",
0,0,0,0,0,
50,                   // cx
0,0,0,0,0,0,0,0));

MSG (RB_INSERTBAND,
-1,
REBARBANDINFO(
rbbisize,
RBBIM_COLORS,
0,
RGB(255,255,0),
RGB(0,128,0),
"",
0,0,0,0,0,
300,                  // cx
0,0,0,0,0,0,0,0));

MSG (RB_GETRECT,
0,
RECT);

MSG (RB_GETRECT,
1,
RECT);

MSG (RB_GETRECT,
2,
RECT);

MSG (RB_GETRECT,
3,
RECT);

MSG (RB_GETRECT,
4,
RECT);

MSG (RB_GETBARHEIGHT,
0,
0);

MSG (RB_GETROWCOUNT,
0,
0);

MSG (RB_GETBANDINFO,
0,
REBARBANDINFO(rbbisize,
4095,
0,RGB(0,0,0),RGB(0,0,0),"Band",127,0,0,0,0,0,0,0,0,0,0,0,0,0));

MSG (RB_GETBANDINFO,
1,
REBARBANDINFO(rbbisize,
4095,
0,RGB(0,0,0),RGB(0,0,0),"Band",127,0,0,0,0,0,0,0,0,0,0,0,0,0));

MSG (RB_GETBANDINFO,
2,
REBARBANDINFO(rbbisize,
4095,
0,RGB(0,0,0),RGB(0,0,0),"Band",127,0,0,0,0,0,0,0,0,0,0,0,0,0));

MSG (RB_GETBANDINFO,
3,
REBARBANDINFO(rbbisize,
4095,
0,RGB(0,0,0),RGB(0,0,0),"Band",127,0,0,0,0,0,0,0,0,0,0,0,0,0));

MSG (RB_GETBANDINFO,
4,
REBARBANDINFO(rbbisize,
4095,
0,RGB(0,0,0),RGB(0,0,0),"Band",127,0,0,0,0,0,0,0,0,0,0,0,0,0));



More information about the wine-devel mailing list