EnumChildWindows 本身已经是递归的了
2023-12-14 11:06:34
我经常看到一些朋友会编写类似于下面的代码。
>> 请移步至 www.topomel.com 以查看图片 <<
上面的这段代码的本意是:通过对窗口树根结点进行操作,然后对每个子窗口进行操作,对窗口树中的所有窗口执行操作。反过来,对子项的操作又以递归方式执行,因此我们最终可以看到树中的每个窗口。
除了如果你真的在一个模糊有趣的窗口树上运行这个函数,你会发现项目被计算了多次。
原因是 EnumChildWindows 函数已经执行递归。
以下是 MSDN 对 EnumChildWindows 的描述:
如果子窗口创建了自己的子窗口,则 EnumChildWindows 也会枚举这些窗口。
如果你添加自己的递归,那么你最终会计算两次孙窗口,四次曾孙窗口,依此类推。递归已由 EnumChildWindows 完成,我们只是使用它即可,不需要再使用递归封装一次了。
>> 请移步至 www.topomel.com 以查看图片 <<
总结
在非必要的情况,还是尽量少使用递归这种形式,虽然它看起来确实很美。
最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《EnumChildWindows already enumerates recursively》
文章来源:https://blog.csdn.net/mmxida/article/details/134986441
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!