BUG: Scroll Bars May Be Re-Enabled or Crash Application When Clicked (199538)



The information in this article applies to:

  • Microsoft Visual C++, Macintosh Cross-Development Addon 4.0
  • Microsoft Visual C++, Macintosh Cross-Development Addon 4.0b

This article was previously published under Q199538

SYMPTOMS

When clicking a disabled scroll bar of a window, the scroll bar becomes enabled. If the mouse click occurs where the scroll thumb would be, the application crashes.

CAUSE

There is a bug in the Windows Portability Layer.

RESOLUTION

Set the scroll range to 0, 0 (zero, zero) using SetScrollSizes() or SetScrollInfo().

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

When a window has its scroll bar enabled, and is disabled using the following code
   // hWnd is a handle to window
   EnableScrollBar(hWnd, SB_BOTH, ESB_DISABLE_BOTH);
				
then the scroll bars are enabled if the user generates a mousedown in the disabled scroll bar. If the mousedown occurs where the scroll thumb would be, the application crashes with the following error message:
Sorry, a system error occurred.
"myapplication"
Bus error
This problem appears for the scroll bar of a combo box but does not appear for the scroll-bar control. This fails with both PowerPC and 68KB platforms.

The workaround is to set the scroll range to 0, 0, as demonstrated below:
   SCROLLINFO si;
   si.cbSize = sizeof(SCROLLINFO);
   si.fMask = SIF_RANGE;
   si.nMin = si.nMax = 0;
   SetScrollInfo(hWnd, SB_HORZ, &si, TRUE);
   SetScrollInfo(hWnd, SB_VERT, &si, TRUE);
				

REFERENCES

(c) Microsoft Corporation 1999, All Rights Reserved. Contributions by Adam Kim, Microsoft Corporation.


Modification Type:MajorLast Reviewed:10/2/2003
Keywords:kbBug kbDocView kbnofix KbUIDesign KB199538