[PATCH v2 1/7] oleacc: Add default edit client accessible object creation function.

Connor McAdams cmcadams at codeweavers.com
Fri Sep 24 09:49:02 CDT 2021


Okay, went back to my notes and also did a bit more research with some
of the accessibility inspector tools. Here's an excerpt from my notes,
which I've confirmed to be the behavior on the various window classes:

Layout of an MSAA window object (represents an HWND):
+------------------------------------------_-----+
|-0| -1     (Title)                    _  |_|  x |
|--+---------------------------------------------+
| File | Edit | Format | Help    -2              |
+---------------------------------------------+--+
| -3                                          |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |-4|
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
|                                             |  |
+---------------------------------------------+--+
|                 -5                          |-6|
+---------------------------------------------+--+

-0: A "System" menubar (icon in top left corner.)
-1: A title bar (also includes minimize, maximize, close)
-2: An "Application" menubar (file, help, etc.)
-3: A client area. Different for each window class.
-4: A vertical scroll bar.
-5: A horizontal scroll bar.
-6: A grip between the horizontal/vertical scroll bars, for resizing

Even though not all windows have these pieces enabled in their window style,
these objects are still created for each window object. The client area (3) is
what changes between different window classes.

Window styles/WM_GETOBJECT OBJID's for each window part:
-0: WS_SYSMENU/OBJID_SYSMENU
-1: WS_CAPTION/OBJID_TITLEBAR
-2: WS_SYSMENU/OBJID_MENU (also, only visible if the window is provided a menu class.)
-3: WS_XXXXXXX/OBJID_CLIENT (all windows have a client area AFAICT.)
-4: WS_VSCROLL/OBJID_VSCROLL
-5: WS_HSCROLL/OBJID_HSCROLL
-6: WS_SIZEBOX/OBJID_SIZEGRIP

https://docs.microsoft.com/en-us/windows/win32/winauto/window

All windows have a child count of 7, and each child is a full object from the
above list.

I think we really only need unique behavior WRT window class in the
client code. The rest of the objects are the same for all windows. So,
the changes you've made make sense, and we can probably just leave the
checks in the client.c file, we shouldn't need any in window.c. I'll
work on following the style of the patches you've sent and send in a v3.



More information about the wine-devel mailing list