SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftMask/OCX 7.0 - Masked Edit Control
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftPrintPreview/DLL 2.0 - Print Preview Control (discontinued)
SftTree/DLL 7.5 - Tree Control
SftBox/OCX 5.0 - Combo Box Control
SftButton/OCX 3.0 - Button Control
SftDirectory 3.5 - File/Folder Control (discontinued)
SftMask/OCX 7.0 - Masked Edit Control
SftOptions 1.0 - Registry/INI Control (discontinued)
SftPrintPreview/OCX 1.0 - Print Preview Control (discontinued)
SftTabs/OCX 6.5 - Tab Control (VB6 only)
SftTree/OCX 7.5 - Tree Control
SftTabs/NET 6.0 - Tab Control (discontinued)
SftTree/NET 2.0 - Tree Control
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 type | Tab. 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 items | One 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 properties | Name 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 buttons | Button 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 button | When 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:
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.
