Esme Povirk (@madewokherd) commented about dlls/uiautomationcore/tests/uiautomation.c:
- SET_EXPECT(Accessible_get_accState);
- SET_EXPECT(Accessible_accLocation);
- hr = IRawElementProviderSimple_GetPropertyValue(elprov, UIA_IsOffscreenPropertyId, &v);
- ok(hr == S_OK, "Unexpected hr %#lx.\n", hr);
- ok(V_VT(&v) == VT_BOOL, "V_VT(&v) = %d\n", V_VT(&v));
- ok(check_variant_bool(&v, FALSE), "Unexpected BOOL %#x\n", V_BOOL(&v));
- CHECK_CALLED(Accessible_get_accState);
- CHECK_CALLED(Accessible_accLocation);
- /* Window is visible, Accessible is within its bounds. */
- ShowWindow(Accessible.ow_hwnd, SW_SHOW);
- ok(GetClientRect(Accessible.ow_hwnd, &rect[0]), "GetClientRect returned FALSE\n");
- MapWindowPoints(Accessible.ow_hwnd, NULL, (POINT *)&rect[0], 2);
- set_accessible_props(&Accessible, 0, ~STATE_SYSTEM_OFFSCREEN, 0, L"Accessible", rect[0].left, rect[0].top,
(rect[0].right - rect[0].left), (rect[0].bottom - rect[0].top));
The documentation for GetClientRect says that it returns client coordinates (and that the upper-left corner is always 0,0), but the documentation for accLocation says that it returns screen coordinates.