Windows|说说Windows嵌套窗口数量限制

Windows|说说Windows嵌套窗口数量限制

嵌套窗口不能太多在古老的年代 , Windows系统并不会限制应用程序的嵌套窗口的数量 。 如果你真的想要创建200个嵌套窗口 , 那也是可以的 , 毕竟这是你自己的决定 , 我们无权多加干涉 。 许多应用程序涉及窗口的操作都是嵌套式的 , 但是有个地方需要注意的是 , 你需要确保程序的栈足够大能容纳得下这样多的嵌套窗口 , 否则会造成栈溢出(stack overflow) 。
引入一种限制措施但是到了Windows NT的时候 , 窗口管理器从应用程序的栈中移除(首先是被移动到了单独的进程 , 后来被移到了内核空间中) 。 这个时候 , 操作系统就需要注意到那些创建了很多嵌套窗口的应用程序了 , 因为一旦应用程序创建了太多嵌套窗口 , 就有可能导致栈溢出 。
在Windows NT时期 , 嵌套窗口被限制为100个 。 到了Windows XP时期 , 这个限制被进一步降到了50个 , 因为我们发现在调用某些内部函数时 , 如果嵌套窗口超过75个 , 则会产生栈溢出 , 所以限制嵌套窗口为50个 , 可以释放更多的栈空间以避免可能出现的栈溢出 。
声明一下我并不是这块功能的实际开发者 , 我只是从代码提交日志里看到这个的 , 如果信息不准确 , 也是很有可能的 。
最后【Windows|说说Windows嵌套窗口数量限制】Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一 , 里面有很多关于Windows的小知识 , 对于广大Windows平台开发者来说 , 确实十分有帮助 。
本文来自:《What is the window nesting limit?》


    推荐阅读