我希望为自己的一个程序实现自定义标题栏,因此需要为窗口实现 WM_GETOBJECT 来保证标题栏按钮能够正常被无障碍软件识别。我设计的窗口结构为一个主窗口内部存在一个由 Windows 创建和嵌入的 DirectUI 子窗口(覆盖整个客户区,主窗口的非客户区已经通过 WM_NCCALCSIZE 删去),标题栏按钮使用 DirectComposition 绘制在主窗口上,并且在主窗口的过程中重写 WM_GETOBJECT 来处理 UI Automation 请求,大致效果如图(红框处为标题栏按钮):
现在的问题是:无障碍软件无法识别到我自绘的标题栏按钮,经过调试发现我的主窗口根本就没有收到 UI Automation 的消息,这些消息都被子窗口吞掉了(然而所有在红框处的鼠标消息都能正常被主窗口接收)。是否存在一种方法,使得我可以无视子窗口去处理 WM_GETOBJECT,以此来重写整个窗口的 UI Automation 树?
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b0475a8ee6ec08fa260013af69ee3d4d/824bb07eca8065384b935a22d1dda144ad34825a.jpg?tbpicau=2024-09-19-05_dbce65ab192e39597ab8e83838b48104)