EnumChildWindows 本身已经是递归的了

EnumChildWindows 本身已经是递归的了

作者:BlogUpdater |  时间:2023-12-14 |  浏览:183 |  评论已关闭 条评论

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

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

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

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

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

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

总结

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

最后

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

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

评论已关闭。