【问题标题】:Resizing CViewForm to fit available window of CFrame in SDI调整 CViewForm 的大小以适应 SDI 中 CFrame 的可用窗口
【发布时间】:2012-03-29 05:08:05
【问题描述】:

Visual Studio 2010 在 MFC 项目的 MDI 和 SDI 应用程序中包含可停靠窗口。耶!但是,我在调整 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?

【问题讨论】:

    标签: visual-c++ mfc


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2020-09-24
      • 2014-07-04
      • 2020-06-07
      • 1970-01-01
      • 2021-07-30
      • 2010-12-12
      • 2011-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多