在SDI中停靠CFormView

时间:2014-04-14 11:26:01

标签: visual-c++ mfc sdi

我有一个带有两个spitter的SDI应用程序[MFC],它将视图划分为3个视图。我已经在所有3个视图中实现了具有CListCtrl / CtreeCtrl的CFormview。

我想要的是使控件适合应用程序中的屏幕。 Ctrls不适合屏幕,并且当spitter被expaned或shriked时不会缩放。那么如何实现屏幕功能的适应性呢?

由于

2 个答案:

答案 0 :(得分:0)

CFormView具有静态大小,通常会滚动。所以它不是真正的解决方案。 所以不要使用CFormView。

您可以使用拆分器窗口再次划分每个窗格以保存树ctrl和列表ctrl。 如果您不需要Doc / View,请创建自己的包含CListCtrl和CTreeCtrl的CWnd并覆盖WM_SIZE并调整其中的两个子控件。

使用CView作为父级也会起作用,再次覆盖WM_SIZE,以便to子控制fir进入视图的整个区域。

如果您使用CWnd或CView作为父类,请考虑使用IsDialogMessage在两个窗口之间使用VK_TAB处理键盘切换...

答案 1 :(得分:0)

当拆分器更改窗口接收WM_SIZE的任何窗格窗口的大小时。将一个WM_SIZE处理程序添加到CFormView,并在该函数中调整子控件的大小以适应。 WM_SIZE传递给你新的大小,m_some_control.MoveWindow(...)可以用来调整每个控件的大小。