HeaderPane
Main
Hide

SftTabs/DLL 7.0 Documentation

Share Link
Print

Accessibility (Screen Readers)

SftTabs/DLL 7.0 ships with built-in Windows UI Automation (UIA) support. Users who rely on Narrator, NVDA, JAWS or any other UIA-compatible assistive technology can read and navigate SftTabs controls without the hosting application doing any work. No opt-in, no code change, no separate build.

What the screen reader sees:

Control typeTab. The root advertises UIA_TabControlTypeId with IsSelectionRequired=TRUE and the Selection pattern. Automation harnesses and AT software can enumerate the tabs, query the active tab, and switch tabs programmatically.
Tab itemsOne TabItem child per real tab (visible and hidden). Each tab item advertises the SelectionItem pattern - activation is via SelectionItem.Select per the UIA spec (TabItems do not advertise Invoke). Hidden tabs still appear in the tree with IsOffscreen=TRUE so AT clients can discover them.
Tab item propertiesName from the tab label with & mnemonic markers stripped (spec requirement); AccessKey carrying the mnemonic character; HelpText from the tab's lpszToolTip so the same text shown as an on-hover tooltip is also announced; IsEnabled from fEnabled && !fHidden; PositionInSet / SizeOfSet for set context; HasKeyboardFocus set on the active tab when the control has focus.
Chrome buttonsButton elements for the scroll-left, scroll-right, close, minimize, and restore chrome buttons (when they exist as HWNDs). Each advertises Invoke. Name is a short identifier ("Close", "Minimize", "Restore", "Scroll Left", "Scroll Right"); HelpText carries the per-button tooltip set on the control (szCloseToolTip / szMinimizeToolTip / etc.).
Per-tab close buttonWhen a tab's fHasCloseButton is TRUE, the tab exposes a nested Button child with the Invoke pattern. Invoking the close button synthesizes a click on the tab's second-picture area - the same code path as a real click, so the application receives the standard SFTTABSN_LBUTTONDOWN_IMAGE2 notification. Tabs without fHasCloseButton remain childless.

Automatic event notifications raised to UIA clients: Selection_Invalidated + AutomationFocusChanged on every tab switch, StructureChanged on tab insert / delete / reset / move / layout, AutomationFocusChanged on focus changes. All events are internally guarded by UiaClientsAreListening so the cost when no assistive technology is attached is one cached function-pointer call.

There is nothing to turn on. The provider loads on demand the first time a UIA client queries the control, so there is no overhead for applications whose users never attach an assistive technology.

Two things the application controls:

  • Set per-tab tooltip text (lpszToolTip in SFTTABS_TAB) so the on-hover tooltip text is also announced to screen readers as the tab's HelpText. Set per-button tooltip text (szCloseToolTip, szMinimizeToolTip, szRestoreToolTip, szLeftToolTip, szRightToolTip on SFTTABS_CONTROL) for the chrome buttons.
  • Call Announce to push short application-status text ("Saved", "Tab closed", "Switched to page 3 of 5") to attached screen readers. Announce is the right tool for momentary status updates that do not have a visible representation in the tab control.

Dark mode and Windows High Contrast are independent accessibility settings. SftTabs honors both automatically (see SetDarkMode and SetHighContrastMode).

Platform note: The UIA notification event used by Announce requires Windows 10 version 1709 or later. On earlier platforms Announce is a silent no-op. All other UIA features work on Windows 7 and later.


Last Updated 04/22/2026 - (email)
© 2026 Softel vdm, Inc.