win16 app crashes in SCROLL_GetScrollRange()

Saulius Krasuckas Saulius.Krasuckas at elst.vtu.lt
Fri Dec 12 03:30:19 CST 2003


hi,

once i got this crash. i have ve filled a bug report:

  http://bugs.winehq.com/show_bug.cgi?id=1503


now, inspired with a notice made by Andreas Mohr..:

> Ah, WAIT!! Watcom has:
> ./h/nt/winuser.h:#define SBM_GETRANGE                0x00E3 /*not in win3.1 */

.i decided to dig into some details. and i've stopped at one unclear
state. wine has a patch in cvs:

  http://www.winehq.org/hypermail/wine-patches/2003/03/0052.html

which says:

> As discussed with Alexandre, this patch makes the GetScroll* API
> functions send a message to the Window in the case of SB_CTL scroll
> bars.

-    if (!(infoPtr = SCROLL_GetScrollInfo( hwnd, nBar )))
-    {
-        if (lpMin) lpMin = 0;
-        if (lpMax) lpMax = 0;
-        return FALSE;
-    }
-    if (lpMin) *lpMin = infoPtr->minVal;
-    if (lpMax) *lpMax = infoPtr->maxVal;
-    return TRUE;
+    /* Refer SB_CTL requests to the window */
+    if (nBar == SB_CTL)
+        return SendMessageA(hwnd, SBM_GETRANGE, (WPARAM)lpMin, (LPARAM)lpMax);
+    else
+        return SCROLL_GetScrollRange(hwnd, nBar, lpMin, lpMax);


may now i ask someone for a help or explanation? the question is: if the
win16 doesn't handle SBM_GETRANGE message, should wine send it in a case
of win16 app? if no, then i'd like to start writing an additional check
;-).


and one more question. msdn states:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/scrollbars/scrollbarreference/scrollbarfunctions/getscrollrange.asp

If the nBar parameter is SB_CTL and the window specified by the hWnd
parameter is not a system scroll bar control, the system sends the
SBM_GETRANGE message to the window to obtain scroll bar information. This
allows GetScrollRange to operate on a custom control that mimics a scroll
bar.

aren't we missing one more check here? maybe we need to check class-name
of control targeted by hwnd?


additional greps led me to:

[s2 at katleriai wine-cvs]$ grep -A10 Scrollbar.messages wine/include/wine/winuser16.h
/* Scrollbar messages */
#define SBM_SETPOS16             (WM_USER+0)
#define SBM_GETPOS16             (WM_USER+1)
#define SBM_SETRANGE16           (WM_USER+2)
#define SBM_GETRANGE16           (WM_USER+3)
#define SBM_ENABLE_ARROWS16      (WM_USER+4)
#define SBM_SETRANGEREDRAW16     WM_NULL  /* Not in Win16 */
#define SBM_SETSCROLLINFO16      WM_NULL  /* Not in Win16 */
#define SBM_GETSCROLLINFO16      WM_NULL  /* Not in Win16 */

  /* CBT hook structures */


  any ideas about where these constants came from? googling with "-wine"
keyword gave me NULL :-/.




More information about the wine-devel mailing list