【发布时间】:2021-11-20 15:18:02
【问题描述】:
MINMAXINFO 的 ptMaxSize 和 ptMaxPosition 组件的 docs 说:
对于顶级窗口,此值基于 (...) 主监视器。
陈瑞峰elaborates:
如果指定的大小大于或等于主监视器的大小,则调整
ptMaxSize以包括主监视器和实际监视器之间的大小差异。 (...) 但是如果ptMaxSize没有完全覆盖监视器,那么它的值就按原样使用。
因此,如果我想填写 MINMAXINFO 以使窗口最大化到非主监视器,在具有不同分辨率/方向的主监视器的设置中,填充工作区域,但如果这样,则不会重叠任务栏碰巧在同一台显示器上......我如何可靠地做到这一点?
ISTM 表示,一旦我获得了显示器的工作区尺寸,窗口就会打开并计算出所需的窗口最大尺寸:
- 如果主显示器的宽度与工作区域相同或更宽,我可以不考虑宽度
- 否则,如果窗口比它所在的显示器宽,我可以减去显示器宽度之间的差异
- 否则,我无法描述我想要的宽度
...高度也一样。
如果我编写代码,我确实得到了所描述的行为...... 除了在显示器具有相同分辨率但方向不同的情况下,调整似乎没有得到已申请。
这一切似乎令人难以置信的复杂和奇怪。我是否遗漏或误解了什么?实际上我应该做一些简单的稳健计算吗?
【问题讨论】:
-
这并没有经常进行测试。显示器有什么特别之处吗,比如当你旋转它时它会自动从纵向切换到横向布局?也许你不应该太担心它,这样的设置并不常见。
-
@Hans:我很想把它埋掉,但遗憾的是,我不得不担心它,因为我支持的用户有这样的设置,并且正在经历意想不到的行为。手动处理 WM_GETMINMAXINFO 大概是不寻常的,但出于乏味的原因,我们也必须这样做。大概有 something 默认消息处理程序为此做了我可以做的事情......
-
这里任何人都可以帮助您的几率很低。使用 Microsoft 支持来解决此类棘手的问题。
标签: winapi multiple-monitors windows-messages