WinApi:如何为屏幕阅读器的自绘按钮添加替代文本?

Posted

技术标签:

【中文标题】WinApi:如何为屏幕阅读器的自绘按钮添加替代文本?【英文标题】:WinApi: How to add alternative text to owner-drawn button for screen readers? 【发布时间】:2013-07-01 15:03:31 【问题描述】:

我创建了一个应用程序(C++,纯 Win32,没有 ATL/MFC),它有一个带有两个按钮的窗口。

这些是所有者绘制的按钮,是窗口本身的子级,我使用带有 BS_OWNERDRAW 样式的 CreateWindowEx 创建它们。

我目前正在进行辅助功能测试,但屏幕阅读器无法读取按钮上的文本。是否需要采取特殊步骤才能让屏幕阅读器读取按钮文本?

【问题讨论】:

你的按钮不显示文字??是你的问题吗?是吗?? 不,按钮正在显示文本,屏幕阅读器无法识别按钮上的文本并将其读出 您是否尝试过使用 SetWindow Text 向按钮实现提供文本? (这可能是屏幕阅读器寻找它的地方,无论按钮是否自行绘制。) 微软有一个完整的可访问性 API 供屏幕阅读器使用,特别是这样他们就不必求助于此类手动操作。标准 UI 控件默认实现辅助功能,但我不确定所有者绘制的控件如何处理。 【参考方案1】:

正如 Scott 所说,尝试设置按钮的标准窗口文本,即使您是手动绘制它。否则,您将不得不让您的控件实现IAccessible 接口,并响应WM_GETOBJECT 窗口消息,以便向屏幕阅读器和自动化工具提供自定义文本等详细信息。

【讨论】:

以上是关于WinApi:如何为屏幕阅读器的自绘按钮添加替代文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何为移动屏幕的导航栏项目添加切换按钮,并使用 HTML、CSS 和 Bootstrap v4 将它们切换为下拉菜单

如何为前置摄像头添加开关按钮?

如何为 UITableView 添加自定义 EditingAccessoryView?

如何为 LIstView 中的每一行添加一个按钮?

如何为小部件 Flutter 添加垂直间距

如何为 A Person View Controller 的导航栏添加返回按钮?