如何以与报告模式下的comctl32 listview相同的方式访问自定义列表视图?

如何以与报告模式下的comctl32 listview相同的方式访问自定义列表视图?,listview,winapi,accessibility,Listview,Winapi,Accessibility,我正在构建一个只支持报表模式的自定义列表视图控件;我这样做是因为标准列表视图不够。我想让大家都能理解。到目前为止,我已经读了很多东西,但我仍然不确定如何使事情完全像真正的listview控件一样工作 特别是: 如何考虑页眉控件?这是标准的comctl32标头控件,没有修改或子类化/超类化。我是否可以将每一行显示为一系列以标题单元格名称命名的列?为了命中测试的目的呢?那么滚动条呢,它们是标准的非客户端WM_HSCROLL/WM_VSCROLL滚动条? 如何导航到行的每一列?标准控件一次只能选择行;

我正在构建一个只支持报表模式的自定义列表视图控件;我这样做是因为标准列表视图不够。我想让大家都能理解。到目前为止,我已经读了很多东西,但我仍然不确定如何使事情完全像真正的listview控件一样工作

特别是:

如何考虑页眉控件?这是标准的comctl32标头控件,没有修改或子类化/超类化。我是否可以将每一行显示为一系列以标题单元格名称命名的列?为了命中测试的目的呢?那么滚动条呢,它们是标准的非客户端WM_HSCROLL/WM_VSCROLL滚动条? 如何导航到行的每一列?标准控件一次只能选择行;没有列选择或列排序。 如何使图像列表中的图像可访问? “我的自定义列表视图”的一个功能是能够使列只包含复选框。控件中可以有多个这样的列。我将如何向可访问的客户端公开它? 最后,我如何使可访问的客户端将此自定义控件视为普通的列表视图?例如,列表视图及其行的名称和值属性应该是什么?父母/孩子呢?我是否应该遵从标准的可访问性代理? 我想在至少所有版本的WindowsXP上运行,并使用通用控件6,所以我目前的目标是MSAA。但是,如果我想要的更适合UI自动化,我可以看看我能做什么


谢谢。

我自己使用Inspect实用程序来查找这个

我不知道如何处理图像或复选框,但我可以说列表项和标题是子项,accName是项文本,accDescription是由列文本组成的字符串:子项的子项文本对,没有accValue,等等


我自己的控件不太适合这个模型,因为它在任何列上都有复选框,所以列表单元格无论如何都必须是可导航的,例如,使用键盘。我可能只是在我的原始帖子中使用可访问表链接。。。我必须亲自调查。同时谢谢你

所有8个问题的答案都是通过编程来实现的。写下代码,然后回来问一些具体的问题,如果你有问题的话。标准的ListView到底有什么不足之处?它可以通过LVN_COLUMNCLICK通知进行列选择和列排序。在列中放置复选框可以使用所有者图形完成。至于ListView如何向MSAA表示自己,请阅读。就我个人而言,我会使用标准ListView,将其子类化以捕获WM_GETOBJECT消息,这样您就可以返回一个自定义IAccessable代理对象,该对象为标准字段委托ListView的标准IAccessable对象,但会根据需要重写其行为,例如,对于您的自定义复选框列。@JonathanPotter-我在问如何编写代码=P,或者更确切地说,我需要编写什么才能使其工作properly@RemyLebeau-我想做一些标准listview不能做的事情:特别是任何列中的图像、文本和复选框,但每列只有三个选项中的一个;我已经尝试过使用子类listview来实现这一点,但由于控件的限制,这一点太麻烦了,不可行