为什么对话框创建后是隐藏状态的

为什么对话框创建后是隐藏状态的

作者:BlogUpdater |  时间:2020-12-27 |  浏览:1379 |  评论已关闭 条评论

一个细节,你值得知晓
即使你在对话框模板中指定了WS_VISIBLE,对话框在最初创建之后,也是隐藏状态。
如果你不仔细研究一番,你可能根本不会注意到这个细节。
这个行为,是历史原因。

让我们回到上古时代,我说的是Windows 1.0那会儿。
那个时候,显卡速度慢,CPU速度慢,内存速度也慢。你可以点击一个显示对话框的菜单,然后等待一两秒钟,以使该对话框从软盘中加载。(啥,软盘?是的,你没听错,在当时吧,硬盘驱动器适合比较有钱的孩子。)

然后,你就必须等待对话框绘制在屏幕上。为了节省宝贵的时间,对话框最初被创建时为隐藏状态,并且在对话框保持隐藏状态时会处理所有预先输入的内容。仅在完成预输入后,对话框才会最终显示出来。

如果当你以非常快的速度,输入全部的内容后并按回车键,你甚至都可以完成整个对话框过程而不需要显示它。嚯嚯,咱要的不就是效率嘛。

现如今,程序都存储在硬盘上了,你(通常)还不至于能淘汰硬盘驱动器,因此这种优化在很大程度上被浪费了,但是出于兼容性原因,这种行为仍然保持在Windows中。

实际上,这个行为在界面体验这方面,仍然有它的用武之地:如果最初创建的对话框是可见的,则用户将能够看到所有创建在对话框中的控件,并观察到WM_INITDIALOG可见运行(例如,更改默认值,隐藏和显示控件,移动控件位置等),这既不美观,也会分散用户的注意力。
用户可能会疑惑:”为什么对话框一开始选中了这个勾选框,然后在我单击它之前突然又取消选中了?”

总结
对话框创建后默认隐藏,如需显示,请调用ShowWindow,谢谢。

最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《Why are dialog boxes initially created hidden?》

标签:

评论已关闭。