gpt4 book ai didi

performance - CreateWindowEx() 在 Windows-7 上运行缓慢(有时)

转载 作者:行者123 更新时间:2023-12-02 17:47:56 25 4
gpt4 key购买 nike

我在 Windows-7(可能还有 Vista)上遇到了非常严重的性能问题,调用了 CreateWindowEx()。

我创建的一些窗口在 Windows-7 中比 XP 中花费的时间长。时间可能高达 15-25 毫秒,当您需要创建很多时,这个时间就很长了。 (XP 上的时间始终为 0-2 毫秒。) 这是为什么?可以做什么?

所有窗口都是在同一个线程中创建的。有些是内置在窗口类中的,有些是我自己的。对我来说,似乎所有带有 WS_POPUP [编辑:和 WS_EX_TOOLWINDOW] 的窗口都会遭受这种延迟,而所有没有它的窗口则不会。 (但实际原因当然可能是其他一些属性。)这似乎适用于我的所有窗口,除了 RICHEDIT_CLASS 控件,它是唯一一个在 1-30 毫秒之间不一致变化的控件,但仅在 7 上。谢谢!

[编辑:该应用程序受到创建主窗口时创建的许多(~300)工具提示的影响最大,使用 gToolTip 。我可以延迟工具提示的创建,直到显示窗口,但我有其他“邪恶”窗口,我仍然想确切地了解发生了什么]

更新:我的工具提示问题得到了极大改善。我从 CodeProject 使用的包装类不适合 [被调用 300 次,每个控件一次],因为它为每次调用创建一个新窗口。诀窍是创建一个工具提示窗口(针对每个弹出窗口),然后为每个控件仅向其发送一条 TTM_ADDTOOL 消息。

因此性能得到了很大改善,但其他窗口仍然存在明显的滞后......

最佳答案

既然您提到了WS_POPUP,它可能与CS_SAVEBITS有关。类样式(如果您创建的窗口设置了 WS_VISIBLE)。

CS_SAVEBITS (0x0800)

Saves, as a bitmap, the portion of the screen image obscured by a window of this class. ... This style increases the time required to display the window, because the system must first allocate memory to store the bitmap.

关于performance - CreateWindowEx() 在 Windows-7 上运行缓慢(有时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4146849/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com