我已经在我的应用程序中禁用了主题/经典主题和/或主题支持的一些不同计算机上调查了这个问题......
当 Windows 配置为在拖动时绘制窗口 + 启用主题绘制时出现问题:
在屏幕上拖动时,我的主应用程序窗口非常卡顿。更糟糕的是,如果我将窗口向左拖动 10 英寸并释放鼠标按钮......然后窗口将继续在屏幕上移动 2-5 秒!
推测 #1 我认为消息队列中可能充斥着与绘制消息相关的内容,这意味着移动消息会延迟?(然后再次导致油漆)也许一些 postmessage/sendmessage 队列出错了。
我已经尝试过 创建了一些代码,这些代码通过了我的表单中的所有控件并禁用了我能想到的所有事件 + 调用 .Hide on them all - 这对问题没有影响......但是,我随后创建了一些代码它通过了所有控件并完全删除了它们——如果我删除了 50-80% 的控件,这将解决问题。
推测#2 Windows 绘制样式主题是否也在不可见的控件上完成?(例如,如果放置在当前未激活的 TTabSheet 上?)
其他说明 老实说,我的表格非常大(我吐出了 7 种不同的工具,它们都使用了大部分)
有可能基于 TFrame 的解决方案——只要不加载到内存中——就可以解决这个问题。但是这有很多问题...对于一个我没有抽象阅读例如选项...即我阅读 myCheckbox.Checked 以确定是否在将给定选项传递给我的分离业务逻辑之前启用它。
但是如果我在中间有一个层,我可以根据需要加载 TFrames ......但转换到这个将是一项重大工作。
...
关于如何解决这个问题的任何想法?减少问题就足够了......我正在考虑:a)删除我可以删除的内容。b)用不绘制样式主题的东西代替我能做的。(例如“调试”控件我用自己来理解发生了什么)c)也许在 TFrame 中加载一些东西 d)试图弄清楚为什么不可见的控件会导致样式主题绘图出现问题......我可以让它们以某种方式被忽略? e) 绘图时禁用主题?f) 禁止在拖动时绘制窗口,即使 Windows 配置为在拖动窗口时绘制窗口也是如此。g) WM_WINDOWPOSCHANGING / WM_WINDOWPOSCHANGED 并在它发生时禁用对齐+绘制。