我有一个相当大的VB6应用程序,它具有在MDI应用程序中的子窗体之间拖放控件的功能。问题是在拖动操作期间性能真的很差。您可以在拖动元素时看到元素重绘(缓慢)。
我第一次在Windows 7中遇到这个问题,经过一些研究得出结论,这是与Aero界面的兼容性问题。我能够通过关闭 Aero 效果来解决它。现在我使用的是Windows 8,问题又回来了,但是,这不再是要禁用的任何Aero。我尝试停止 dwm.exe 进程,但这只是在 Windows 8 中重新启动,我认为这是因为愚蠢的"现代 UI"界面需要它。
我计划将来迁移到 .NET,但这将是一项艰巨的工作。现在,我需要一种解决方法来使此拖动问题在Windows 8中正常工作。
我们发现了一种在Windows 8中运行良好的解决方法。将控件设置为在拖动时使用图标可以消除性能问题。这是通过设置 DragIcon 属性来完成的。如果未设置 DragIcon(如本例所示),则默认行为是在拖动时显示控件的边框。正是这个边界的绘图在支持 Aero 的桌面上非常慢。现在它的表现符合预期,看起来也好一点。
这是一个糟糕的解决方案,但它可能只适合您。 进入 EXE 的属性,然后选择兼容性选项卡。 将兼容模式设置为 WinXP。 尝试弄乱以禁用开头的复选框... 通常,这些方法的某种组合通常会解决问题。 同样,不是一个很好的解决方案。