调整CViewForm的大小以适应SDI中可用的CFrame窗口

时间:2012-03-29 05:08:05

标签: visual-c++ mfc

使用Visual Studio 2010,MDI和SDI应用程序中的可停靠窗口包含MFC项目。好极了!但是,我在调整CFormView的大小以适应CFrame中的可用区域时遇到了问题。

我有一个SDI应用程序,它动态创建用户选择的视图类型并将其设置为CFrame对象。

我意识到我可以使用MDI,但是由于拥有多个文档的复杂性较高,我希望远离它。

创建新视图并显示它效果很好,但是如果我:

CView* pOldActiveView = GetActiveView();
CView* pNewActiveView = (CView*)new CMyView;
CRect r;
pOldActiveView->GetWindowRect(&r);
pNewActiveView->Create(NULL, NULL, 0, w, this, nForm, &context); 
pNewActiveView->OnInitialUpdate();

:然后每次打开一个新视图时,窗口向上移动8个像素。我尝试调整CRect,这有助于解决这个问题。

但是,当我隐藏/停靠输出和类窗口,甚至是基于SDI功能区的应用程序中的状态栏时,CFormView不会自动调整大小,我找不到找到应该调整大小的CRect的方法它来。 如何从CFormView所在的CFrame中获取CRect?

1 个答案:

答案 0 :(得分:0)

没关系。没有回应我决定走另一条路。我没有动态切换大型机中的视图,而是找到了这个链接,并在文档中添加了视图并随意切换了它们(mfc处理了大小调整)http://msdn.microsoft.com/en-us/library/s199bks0(v=vs.80).aspx