【发布时间】:2015-03-18 19:38:23
【问题描述】:
在 WIndows 7 中,当我使用系统菜单的小方形按钮最大化 MFC 对话框时,生成的对话框窗口比屏幕的物理尺寸略大。这是为什么呢?
GetSystemMetrics 调用产生正确的显示器尺寸,屏幕分辨率(右键单击桌面)也显示正确的尺寸。
在窗口最大化后发送的 WM_SIZE 消息显示的大小比监视器稍大,与被切断的对话框的边缘部分一致。例如,在 1920 x 1080 显示器上,来自 OnSize() 的最大尺寸为 1936 x 1096。Spy++ 显示
矩形:(-1928, -8) - (8, 1088), 1936 x 1096(最大化)
恢复的矩形:(-1188, 79) - (173, 849) 1015 x 770
客户端矩形:(8, 50) - (1928, 1088) 1920 x 1038
(对话框位于 2 显示器系统的左侧显示器上)。
我需要了解“最大化窗口”的确切定义,因为我正在重新排列单显示器和多显示器系统上的一些对话框窗口,以响应用户更改窗口大小和/或位置。
谁能解释我为什么看到我描述的结果,以及我如何设置一个对话框,以便系统菜单的“最大化”按钮不会导致对话框超出显示器的物理边界?
MFC、64 位 Windows 7 专业版、Visual Studio 2013、C++
【问题讨论】:
-
您是否有任何第三方多显示器软件正在运行?
标签: c++ mfc multiple-monitors