2010-04-04 3 views
2

J'ai remarqué que si vous appelez FindWindowEx ou EnumChildWindows par rapport à un hWnd appartenant à une fenêtre qui n'est pas au premier plan, c'est-à-dire réduit, ils ne signalent aucun enfant. D'autre part, si j'appelle d'abord SetForegroundWindow contre la fenêtre que j'interroge, et après cela FindWindowEx ou EnumChildWindows, ils rapportent tous les enfants. Les prochains appels signalent tous les enfants même si la fenêtre qui m'intéresse n'est pas au premier plan. C'est presque une sorte de mise en cache après le premier appel?Un arbre de contrôle est-il mis en cache après le premier appel de FindWindowEx/EnumChildWindows?

Répondre

0

Est-ce une fenêtre dans votre propre application, ou étudiez-vous ce qu'une application tierce fait?

Je suppose que l'application crée uniquement ses fenêtres enfants la première fois qu'elle est mise au premier plan; Cela expliquerait le comportement que vous voyez. À ma connaissance, EnumChildWindows n'effectue aucune mise en cache.

+0

C'est une autre application, ce que je dis, c'est que pour que EnumChildWindows puisse signaler des enfants, la fenêtre cible doit être au premier plan, au moins pour la première fois. La fenêtre a créé ses fenêtres enfant avant d'appeler EnumChildWindows, je peux tous les voir, mais si ce n'est pas en premier plan c'est presque comme s'il n'y avait pas d'enfants. –

+0

@Ion: Si, comme vous l'avez dit dans la question, la fenêtre est minimisée lorsque vous appelez EnumChildWindows, comment pouvez-vous être sûr que les fenêtres enfants ont déjà été créées? Ou ce comportement se produit-il également si la fenêtre est visible (c'est-à-dire non minimisée) mais pas au premier plan? –

+0

C'est correct, même si la fenêtre est visible mais pas au premier plan. –