MFC 网格是绝对布局,在调整窗口大小时会被剪裁

Posted

技术标签:

【中文标题】MFC 网格是绝对布局,在调整窗口大小时会被剪裁【英文标题】:MFC grid is absolute layout and gets clipped during window resize 【发布时间】:2012-06-12 01:29:46 【问题描述】:

使用 Visual Studio C++ 2010。

目前在 MFC 代码的窗口中,我有一个网格。如果我调整窗口大小(手动拖动角),我希望网格“变小”,但是当我调整窗口大小时,网格实际上是完全静态的,例如将窗口大小调整为非常小的尺寸会导致网格的边缘超出窗口的可见性。

我注意到此窗口中的其他“对象”(特别是我拥有的 MFC 按钮,例如“取消”)确实随窗口缩放,并且当我将窗口调整为较小尺寸时不会消失.它们遵循窗口的边缘,就好像它们被赋予了智能相对坐标而不是我的网格遵循的绝对坐标。

目前我在这里使用网格http://www.codeproject.com/Articles/8/MFC-Grid-control-2-27 虽然我高度怀疑它不是问题的根源(有一个使用它的示例代码,并且调整大小的行为符合预期;我无法编译它,但我运行了exe示例)。我最近从 MSFlexGrid 切换(因为它不支持 64 位),但在以前的版本中,当我使用 MSFlexGrid 时,它也没有这个问题。

我认为它可能是 .rc 文件中的某种窗口属性或对象属性,但我比较了文件并没有发现任何线索。

【问题讨论】:

【参考方案1】:

没有像窗口属性这样的东西,它告诉窗口将大小调整为父级的大小。

如果按钮改变了大小和位置,您可能正在使用某种负责调整子控件大小的类。

为您的网格遵循相同的操作,或通知网格有关父级大小的更改并相应地调整网格大小。

【讨论】:

以上是关于MFC 网格是绝对布局,在调整窗口大小时会被剪裁的主要内容,如果未能解决你的问题,请参考以下文章

具有布局适合和网格的 Extjs 3.3.1 FieldSet 在窗口调整大小时不会调整网格大小

刷新与调整浏览器窗口大小时网格布局呈现不同

调整网格布局内的标签大小?

Tkinter 网格动态布局

自动布局:窗口调整大小时如何更改框架的原点?

Qt QTableWidget 列调整大小