【发布时间】:2012-06-11 19:23:48
【问题描述】:
在多显示器系统上,“空白”VCL 应用程序可以很好地最大化,但是启用样式(并且选择了一个作为默认样式)的同一应用程序会错误地最大化。我看到的是窗口的右侧边缘延伸到第二台显示器(我的主要在左侧)。当我开始与其他 Windows 应用程序进行比较时,我注意到在 Windows 7 下(至少),最大化的窗口甚至在左侧、右侧或底部都没有非客户端边框。事实上,标准 VCL(非样式化)应用的行为方式与此相同,没有非客户端边界。
我该如何解决这个问题?我注意到 TFormStyleHook 有一个 WMNCCalcSize 处理程序,我还没有剖析它,但让我想知道 VCL 是否可能错误地处理最大化窗口的这条消息。
【问题讨论】:
-
还有更多 VCL 样式错误。请对此进行质检。
-
您能否在单个显示器中重现此行为?我问是因为在我当前的位置我没有另一台显示器来测试这个问题。
-
从视觉上看,样式化应用的单显示器行为与非样式化应用相匹配,所以没有问题。
-
强制性“旧事物”链接:“为什么最大化的窗口有错误的窗口矩形?” (blogs.msdn.com/b/oldnewthing/archive/2012/03/26/10287385.aspx) 在其最后一节中描述了为什么在最近的 Windows 版本中,在其他显示器上没有可见的最大化应用程序边框。自己绘制 NC 区域的代码显然没有得到这种特殊处理。
标签: delphi delphi-xe2 vcl-styles maximize-window