Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 窗口样式主题化使窗口在拖动时结巴_Delphi_Delphi Xe4_Window Style - Fatal编程技术网

Delphi 窗口样式主题化使窗口在拖动时结巴

Delphi 窗口样式主题化使窗口在拖动时结巴,delphi,delphi-xe4,window-style,Delphi,Delphi Xe4,Window Style,我已经在我的应用程序中禁用了主题/经典主题和/或主题支持的一些不同计算机上调查了此问题 将Windows配置为在拖动时绘制窗口+启用主题绘制时出现问题: 当我在屏幕上拖动时,我的主应用程序窗口会非常口吃。如果我将窗口向左拖动10英寸并释放鼠标按钮,情况甚至会非常糟糕然后窗口将继续在屏幕上移动2-5秒 投机#1 我认为消息队列中可能充斥着与绘画消息相关的东西,这意味着移动消息会被延迟?(这会再次导致绘制)可能是某些postmessage/sendmessage队列出错 我尝试过的 我创建了一些代码

我已经在我的应用程序中禁用了主题/经典主题和/或主题支持的一些不同计算机上调查了此问题

将Windows配置为在拖动时绘制窗口+启用主题绘制时出现问题:

当我在屏幕上拖动时,我的主应用程序窗口会非常口吃。如果我将窗口向左拖动10英寸并释放鼠标按钮,情况甚至会非常糟糕然后窗口将继续在屏幕上移动2-5秒

投机#1 我认为消息队列中可能充斥着与绘画消息相关的东西,这意味着移动消息会被延迟?(这会再次导致绘制)可能是某些postmessage/sendmessage队列出错

我尝试过的 我创建了一些代码,这些代码在我的表单中通过了所有控件,并禁用了所有我能想到的+调用的事件。。。然而,我随后创建了一些代码,这些代码通过所有控件并完全删除了它们——如果我删除了50-80%的控件,这就解决了问题

投机#2 Windows绘图样式主题化是否也在控件上完成?是否不可见?(例如,如果放置在当前未激活的TTAB表上?)

其他注释 老实说,我的表格很大(我吐出了7种不同的工具,它们都用得最多)

一个基于TFrame的解决方案——只要不加载到内存中——就有可能解决这个问题。但是这里面有很多问题。。。首先,我没有抽象阅读,例如选项。。。例如,我读取myCheckbox。选中该复选框以确定在将给定选项传递到我的独立业务逻辑之前是否启用了该选项

但如果中间有一个层,我可以根据需要加载TFrames。。。但要转变成这样,这将是一项重大的工作

关于如何解决这个问题有什么想法吗?减少问题就足够了。。。我在想: a) 移除我能移除的。 b) 用非风格主题画的东西替换我能做的。(例如,我使用“调试”控件来了解正在发生的事情) c) 也许可以在TFrame中加载一些东西 d) 试图找出为什么不可见控件会导致样式主题绘图出现问题。。。我可以让他们忽略吗? e) 在绘图时禁用主题化? f) 禁用在拖动时绘制窗口,即使将窗口配置为在拖动窗口时绘制窗口。
g) WM_WINDOWPOSCHANGED/WM_WINDOWPOSCHANGED并禁用align+draw。采样或其他探查器将告诉您应用程序花费的时间最多,这可以让您了解拖动应用程序时发生的情况。我有AQTime6许可证,但由于MSI安装程序的原因,它不会安装在我的Windows 10上错误,但如果解决方案本身不存在,我计划这样做。(我的代码在使用Delphi 2010时也编译并显示了相同的问题,因此它是可行的,)我们如何重现这个问题?我在我的任何应用程序中都没有看到它。如果我制作视频会有帮助吗?我有一些其他应用程序使用相同的代码构建,但是表单包含的控件要少得多,所以问题不会发生。这个问题似乎也发生在带有WinXP主题的WinXP上,至少没有以同样的方式注意到。这些事实加上我的实验表明,它有助于删除不可见的控件(放置在非选定选项卡上的控件),这让我觉得主题/样式代码或窗口(句柄?)中可能有某种东西增加了问题。