调整MDI子框架窗口的大小以适应窗体视图

介绍 许多应用程序允许用户使用表单输入和编辑数据。如果是在MDI环境中完成的, 管理显示表单的MDI框架窗口的大小可能是一项令人生畏的任务。这 本文向您展示了如何调用MFC函数来调整MDI子框架窗口的大小,以适合控件中包含的窗体 表单视图在里面。 用MFC调整你的窗体大小! 在派生窗体视图类中查看是否有CFormView::OnInitialUpdate()函数覆盖。这 如果您使用AppWizard或ClassWizard创建了窗体视图类,则通常为您插入。去那个地方 在代码中重写的实现。接下来,查找对ResizeParentToFit()的调用 它自己在一条线上。如果您找到这样的调用,请用下面粗体显示的代码替换这一行。如果 如果没有这样的调用,那么将粗体显示的代码添加到OnInitialUpdate()的实现中: 隐藏,复制Code

void CMyFormView::OnInitialUpdate()
{
    CFormView::OnInitialUpdate();

    GetParentFrame()->RecalcLayout();
    ResizeParentToFit(FALSE);
    ...
}

视图的MDI子框架窗口的客户区域的大小现在应该与对话框模板的大小匹配 用于将控件放置在窗体上。 不要调整大小或最大化! 本文提供的示例代码展示了如何调整窗体视图框架窗口的大小以适应它们的窗体, 如上面列出。但是,您可能不希望用户能够因此调整窗口大小或最大化窗口 挫败了调用CScrollView::ResizeParentToFit()的目的。这是因为MFC放置 窗体位于MDI子框架窗口的客户区域的右上角。如果你想阻止用户 在调整或最大化框架窗口时,禁用WS_THICKFRAME和WS_MAXIMIZEBOX 样式,并将WS_BORDER样式添加到窗口中。使用CMDIChildWnd::PreCreateWindow()可以很容易地做到这一点 由AppWizard为您覆盖代码。当然,这通常在CChildFrame类中。 样本是这样的: 隐藏,复制Code

BOOL CChildFrame::PreCreateWindow(CREATESTRUCT& cs)
{
    if( !CMDIChildWnd::PreCreateWindow(cs) )
        return FALSE;

    cs.style &= ~(WS_THICKFRAME);
    cs.style &= ~(WS_MAXIMIZEBOX);
 
    cs.style |= WS_BORDER;

    return TRUE;
}

结论 如果你对我所做的这些技术有任何疑问,请随时联系我, 或者在下面的留言板上留言! 本文转载于:http://www.diyabc.com/frontweb/news6758.html

原文地址:https://www.cnblogs.com/Dincat/p/13467436.html