Дезинфицированный / структурированный вывод enumchildwindows API - PullRequest
0 голосов
/ 23 марта 2012

Моя задача - рекурсивно захватить все дочерние окна главного окна, как только пользователь нажмет на окно (могут быть различные уровни дочерних окон), и создать древовидную структуру, в которой все дочерние окна должны быть расположены в их правильная иерархия уровней. Родительский узел должен быть главным окном, непосредственные дочерние окна должны быть дочерними окнами уровня, а затем дочерние окна уровня 2, то есть внуки должны быть правильно назначены их родителям. Я использую API-интерфейс EnumChildWindows для вывода списка всех дочерних окон, но проблема в том, что в нем очень грубо перечислены все дети и внуки. Я не могу определить, как определить, какие внуки принадлежат каким детям? Есть ли способ, с помощью которого я мог бы создать более структурированный вывод, используя EnumChildWindows? Пожалуйста, дайте мне несколько советов. Спасибо заранее.

1 Ответ

1 голос
/ 23 марта 2012

EnumChildWindows() задокументировано как возвращение всех детей и внуков и т. Д. Без какой-либо возможности их различить.Вы можете либо позвонить GetParent(), чтобы проверить, что является каждым родительским элементом Windows, либо использовать GetWindow() в цикле и повторять себя.

GetParent() кажется более безопасным, поскольку он использует атомарность и безопасность * 1007.*.

...