BUG: Rebar Control Exposes Its Accessible Properties Incorrectly (221579)



The information in this article applies to:

  • Microsoft Platform Software Development Kit (SDK) 1.0, when used with:
    • Microsoft Windows 98
    • Microsoft Windows 95
    • Microsoft Windows NT Server 4.0 SP4
    • Microsoft Windows NT Workstation 4.0 SP4

This article was previously published under Q221579

SYMPTOMS

The Rebar control returns the following error message when the Inspect Objects sample checks for the control's accessible properties:
invalid parameter

STATUS

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

MORE INFORMATION

Steps to Reproduce Behavior

  1. Launch the Inspect Objects sample from the Microsoft Active Accessibility group.
  2. Launch Windows Explorer.
  3. Point the cursor between the title bar and the menu bar of Explorer.
The Inspect Objects application calls AccessibleObjectFromPoint() to get the object under the cursor. As a result, the OLEACC.DLL hittesting moves down to the Rebar window with a point that is on the Rebar control's 1-pixel-wide border. The control responds to the WM_NCHITTEST message with HT_CLIENT instead of HT_BORDER.

The OLEACC.DLL then takes this HT_CLIENT result and drills down and hittests the client area. It is confused when it notices that the given point, on the border, is outside of the client area. Consequently, the CClient::HitTest function returns a FALSE with VT_EMPTY. AccessibleObjectFromPoint() misses the S_FALSE by using SUCCEEDED() and returns VT_EMPTY and S_OK. The Inspect Objects application fails to notice the VT_EMPTY value and uses random data for the child IVal. Finally, the OLEACC.DLL rejects this random value for the child ID and sends the "invalid parameter" message.

REFERENCES

Microsoft Active Accessibility

Modification Type:MinorLast Reviewed:7/11/2005
Keywords:kbAAcc kbBug kbClient KB221579