enumchildwindows API的清理/结构化输出

时间:2012-03-23 13:31:48

标签: winapi treeview sanitization

我的任务是,一旦用户点击窗口(可以有各种级别的子窗口),递归地捕获主窗口的所有子窗口,并构建一个树结构,其中所有子窗口应该排列在他们适当的等级层次。 父节点应该是主窗口,直接子窗口应该是级别子窗口,然后是2级子窗口,即应该将大孩子正确地分配给他们的父母。 我正在使用EnumChildWindows API列出所有子窗口,但问题是它非常粗略地列出所有的孩子和孙子,我无法如何划分或了解哪些大孩子属于哪个孩子?有没有一种方法可以使用EnumChildWindows生成更结构化的输出? 请给我一些指示。谢谢。

1 个答案:

答案 0 :(得分:1)

EnumChildWindows()被记录为返回所有儿童和大孩子等,无法区分它们。您可以调用GetParent()来检查每个父窗口是什么,或者在循环中使用GetWindow()并自己递归。

GetParent()似乎更安全,因为它利用了EnumChildWindows()的原子性和安全性。