EnumChildWindows 本身已经是递归的了

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

>> 请移步至 www.topomel.com 以查看图片 <<

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

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

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

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

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

>> 请移步至 www.topomel.com 以查看图片 <<

总结

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

最后

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

相关推荐

  1. <span style='color:red;'>递</span><span style='color:red;'>归</span>

    2023-12-14 10:42:03      46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 10:42:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 10:42:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 10:42:03       82 阅读
  4. Python语言-面向对象

    2023-12-14 10:42:03       91 阅读

热门阅读

  1. Linux--绝对路径和相对路径

    2023-12-14 10:42:03       60 阅读
  2. linux设置环境变量

    2023-12-14 10:42:03       58 阅读
  3. Golang模板语法

    2023-12-14 10:42:03       61 阅读
  4. 网络编程案例

    2023-12-14 10:42:03       61 阅读
  5. Python 表达式计算详解(eval)

    2023-12-14 10:42:03       66 阅读
  6. C++11在算法竞赛中常用语法特征/语法糖

    2023-12-14 10:42:03       52 阅读
  7. FPGA设计流程:从概念到实现的详细指南

    2023-12-14 10:42:03       50 阅读
  8. 【Typora 的一些常用使用方法】

    2023-12-14 10:42:03       72 阅读
  9. SpringCloud 和 Linux 八股文第一期五问五答

    2023-12-14 10:42:03       45 阅读
  10. xml.etree.ElementTree --- ElementTree XML API

    2023-12-14 10:42:03       46 阅读
  11. mysql迁移步骤

    2023-12-14 10:42:03       50 阅读