【发布时间】:2010-11-10 16:52:48
【问题描述】:
在调用 CreateWindowEx() 时,我在 Windows-7(可能还有 Vista)上遇到了非常糟糕的性能问题。
我正在创建的一些窗口在 Windows-7 中比 XP 花费的时间多。时间可能高达 15-25 毫秒,当您需要创建很多时,这已经很长了。 (XP 上的时间始终为 0-2 毫秒。)这是为什么呢?可以做什么?
所有窗口都在同一个线程中创建。有些是在窗口类中构建的,有些是我自己的。对我来说,似乎所有带有 WS_POPUP [EDIT: and WS_EX_TOOLWINDOW] 的窗口都会受到这种延迟的影响,而没有它的所有窗口都不会。 (但实际原因当然可能是其他一些属性。)这似乎适用于我的所有窗口,除了 RICHEDIT_CLASS 控件,这是唯一一个在 1-30 毫秒之间不一致变化的控件,但仅在 7 上。 谢谢!
[编辑:该应用程序在创建主窗口时使用gToolTip 创建了许多(~300)工具提示。我可以延迟工具提示的创建,直到显示窗口,但我还有其他“邪恶”窗口,我仍然想了解到底发生了什么]
更新:我的工具提示问题得到了极大改善。我从 CodeProject 使用的包装类不适合 [被调用 300 次,每个控件一次],因为它为每次调用创建一个新窗口。诀窍是创建一个工具提示窗口(为每个弹出窗口),然后只为每个控件发送一个 TTM_ADDTOOL 消息。
因此性能得到了很大改善,但其他窗口仍然存在明显的滞后...
【问题讨论】:
标签: performance winapi windows-7 windows-xp