delphi – 我能做什么关于最大化,风格的窗口,显示在邻近显示器上的边界?

delphi – 我能做什么关于最大化,风格的窗口,显示在邻近显示器上的边界?,第1张

概述在多监视器系统上,“空白”VCL应用程序可以最大限度地提高精度,但是启用样式(默认情况下选择一个)的相同应用程序最大化不正确。我看到的是窗口的右边缘延伸到第二个监视器上(我的主要位于左侧)。当我开始与其他Windows应用程序进行比较时,我注意到在Windows 7(至少)下,最大化的窗口甚至在左边,右边和底部都没有非客户端边框。实际上,标准VCL(非风格)应用程序的行为方式相同,没有非客户端边界 在多监视器系统上,“空白”VCL应用程序可以最大限度地提高精度,但是启用样式(默认情况下选择一个)的相同应用程序最大化不正确。我看到的是窗口的右边缘延伸到第二个监视器上(我的主要位于左侧)。当我开始与其他windows应用程序进行比较时,我注意到在windows 7(至少)下,最大化的窗口甚至在左边,右边和底部都没有非客户端边框。实际上,标准VCL(非风格)应用程序的行为方式相同,没有非客户端边界。

我该如何解决?我注意到TFormStyleHook有一个WMNCCalcSize的处理程序,我还没有解剖,但让我想知道VCL是否可能错误地处理这个消息最大化的窗口。

解决方法 经过一段时间的磨合之后,我的观点是,这不是一个vcl风格的BUG。这其实与 mghie mghie提到的 article年度的行为有关。

具体的行为是,最大化窗口的大小大于窗口最大化的监视器的工作区域。据说,窗口管理员隐藏了悬垂边界。显然,它并不完全用定制框架。请注意,MSDN自己的custom window frame example似乎也遇到同样的问题(参考社区内容中标题为“窗口最大化时的错误”)的帖子)。 VCL的应用程序与MSDN的示例不同,因为它不是基于DWM,但我仍然认为这是同一个问题。

突出边界具有系统大小边界的大小(SM_C [X | Y] SIzefRAME),但这与下面的解决方法无关,因为它忽略了 *** 作系统建议的大小/位置并使用了工作区。

不幸的是,我不认为这种解决方法是可用的。一方面,上述行为没有记录,二是解决办法不完善;还有一个奇怪的像素出来。如果您将窗口完全按在工作区域上,则窗口管理器决定将窗口偏移到它认为应该放置窗口(隐藏框架)的位置。 (VCL可能被修改为做窗口管理器所做的工作,并考虑到悬而未决,并不绘制它们或类似的东西,但这将是更多的工作,而且仍然是解决方法的无证行为..)

无论如何;

type  TForm1 = class(TForm)    ..  protected    // overrIDing styles is not necessary since TFormStyleHook.WMGetMinMaxInfo    // first calls the default window procedure     procedure WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);      message WM_GETMINMAXINFO;..procedure TForm1.WMGetMinMaxInfo(var Message: TWMGetMinMaxInfo);var  R: TRect;begin  // always arrives with MinMaxInfo.ptMaxposition = (-SM_CXFRAME,-SM_CYFRAME)  // and MinMaxInfo.ptMaxSize = (PrimaryMonitor.WIDth (?) + 2 * SM_CXFRAME,... )  inherited;  // should test for OS,styles etc. before running the below   R := Monitor.WorkareaRect;  InflateRect(R,-1,-1);             // odd pixel  OffsetRect(R,-Monitor.left,-Monitor.top);  Message.MinMaxInfo.ptMaxposition := R.topleft;  Message.MinMaxInfo.ptMaxSize := Point(R.WIDth,R.Height);end;
总结

以上是内存溢出为你收集整理的delphi – 我能做什么关于最大化,风格的窗口,显示邻近显示器上的边界?全部内容,希望文章能够帮你解决delphi – 我能做什么关于最大化,风格的窗口,显示在邻近显示器上的边界?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1281194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-09
下一篇 2022-06-09

发表评论

登录后才能评论

评论列表(0条)

保存