EnumChildWindows 本身已经是递归的了
  z0Lr3p4aE7p5 2023年12月22日 73 0


我经常看到一些朋友会编写类似于下面的代码。

上面的这段代码的本意是:通过对窗口树根结点进行操作,然后对每个子窗口进行操作,对窗口树中的所有窗口执行操作。反过来,对子项的操作又以递归方式执行,因此我们最终可以看到树中的每个窗口。

除了如果你真的在一个模糊有趣的窗口树上运行这个函数,你会发现项目被计算了多次。

原因是 EnumChildWindows 函数已经执行递归。

以下是 MSDN 对 EnumChildWindows 的描述:
如果子窗口创建了自己的子窗口,则 EnumChildWindows 也会枚举这些窗口。

如果你添加自己的递归,那么你最终会计算两次孙窗口,四次曾孙窗口,依此类推。递归已由 EnumChildWindows 完成,我们只是使用它即可,不需要再使用递归封装一次了。

总结

在非必要的情况,还是尽量少使用递归这种形式,虽然它看起来确实很美。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《EnumChildWindows already enumerates recursively》

EnumChildWindows 本身已经是递归的了_开发语言

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月22日 0

暂无评论

推荐阅读
z0Lr3p4aE7p5