我在Windows 7(和可能的Vista)使用CreateWindowEx()函数时遇到了相当严重的性能问题。
我创建的一些窗口在Windows 7中需要的时间比XP长得多。时间可能高达15-25毫秒,当你需要创建很多窗口时这是很多的。(在XP上的时间始终为0-2毫秒。)为什么会这样?有什么解决方法吗?
所有窗口都在同一个线程中创建。其中一些是使用窗口类构建的,而另一些则是我自己的。对我来说,似乎所有具有WS_POPUP [EDIT:和WS_EX_TOOLWINDOW]属性的窗口都会受到此延迟的影响,而没有该属性的窗口则不会。(但实际原因当然可能是其他属性导致的。)这似乎适用于我所有的窗口,除了RICHEDIT_CLASS控件,它是唯一一个在7上不稳定地变化在1-30毫秒之间的控件。 谢谢!
[编辑:该应用程序最大的问题是在主窗口创建时,使用gToolTip创建了许多(约300个)工具提示。我可以将工具提示的创建延迟到窗口显示时,但我有其他“恶意”窗口,而且我仍然想确切地了解正在发生的事情。][更新:我的工具提示问题得到了很大改善。我从CodeProject中使用的包装类不适合[每个控件调用一次,共计300次],因为它为每个调用创建一个新窗口。诀窍是为每个弹出窗口创建一个工具提示窗口,然后仅向其发送TTM_ADDTOOL消息以针对每个控件。]
[因此,性能得到了很大改善,但对于其他窗口仍存在明显的延迟...]