MFC的网格,flexgrid或网格布局

时间:2010-11-04 18:56:47

标签: c++ mfc

MFC似乎严重缺乏布局管理器/ sizer。很难相信任何自尊的UI库都会缺少sizer但是你去了。我已经发现了一些可以正常处理通常的盒子布局的东西,但我没有找到的是一个sizer,当你需要在展开时垂直和水平对齐时,它们会有所帮助。

我从这里得到了大部分信息:

layout manager for MFC dialog apps

我已经浏览了网页,每次搜索MFC和网格/任何东西/最终都会把我送到一堆网格小部件,而不是sizer。在任何地方都有这样的事情吗?

2 个答案:

答案 0 :(得分:3)

几年前我使用WTL遇到了这个“问题”。我厌倦了复杂的WM_SIZE处理程序,所以我咬了一下子弹并实现了一些布局容器,并将Win32控件和我自己的一些控件调整为布局容器。

我基本上为每个控件创建了子类,并为“MinSize,MaxSize,PreferredSize”实现了自己的协议。有些控件很难实现,但没有什么是不可能的。这并不是那么难,所以你可能想给它一些思考并去做。 MFC在子类化方面不如ATL / WTL灵活,但它足够灵活。

不幸的是,我无法与您分享代码。 :/我甚至在顶部添加了一个简单的XML标记语言,这非常好。

答案 1 :(得分:2)

我还没有听说过适用于MFC的功能齐全的sizer库。而且我认为没有比这个相关问题中提到的选项更好的了。

在我的意见中,我怀疑此时会不会有任何此类事情发生。其他成熟的GUI框架已经默认集成了适当的sizer功能,同时也弥补了MFC的许多其他缺陷。我想很多人会说现在为MFC开发这样的东西是不值得的。 (我甚至曾经开始研究一种可以应用于MFC的通用大小调整库,但最终失去了野心并把它放在一边。)

此外,我觉得微软自己已经注销了MFC作为遗产,而是转向支持.NET / C#/ WPF进行GUI开发。毕竟,看看这些新技术在过去10年左右的进展有多远,与此同时,MFC几乎没有改变,只是偶尔添加一个功能包。

如果它完全可行,我建议考虑转向更现代的C ++框架(例如Qt)或.NET / C#/ WPF(至少对于应用程序的GUI部分)。