http://www.codeproject.com上有大牛写的基于对话框的EasySize(http://www.codeproject.com/KB/dialog/easysize.aspx),很好的实现了该功能,还真够酷。只是我拿到FormView SDI的工程上来试,就不行了。
有人通过EasySizeDemo在FormView SDI上实现过吗?
急用,谢谢了!
小弟分不够,想给多却给不了,汗...

解决方案 »

  1.   

    自己处理MainFram 的OnSize消息,在里面改变各个空间的位置就行了
      

  2.   

    感谢跟帖!
    这个我试过了,效果不好,一般都是计算纵横方向上的比例,但int型相除后的结果赋给int,这样会有精度损失,导致反复拉动窗口,控件就会越跑越远,甚至最后从窗口的一边消失了,你可以试试。
      

  3.   

    你计算的时候转成double型,算完再在转回来,精度可以满足需求。
      

  4.   

    不知道有没别的办法,不过,看过vc9+sp1里面的向导生成的vs样式工程,也是在OnSize里面计算的。贴一段
    void CFileView::OnSize(UINT nType, int cx, int cy)
    {
    CDockablePane::OnSize(nType, cx, cy);
    AdjustLayout();
    }void CFileView::AdjustLayout()
    {
    if (GetSafeHwnd() == NULL)
    {
    return;
    } CRect rectClient;
    GetClientRect(rectClient); int cyTlb = m_wndToolBar.CalcFixedLayout(FALSE, TRUE).cy; m_wndToolBar.SetWindowPos(NULL, rectClient.left, rectClient.top, rectClient.Width(), cyTlb, SWP_NOACTIVATE | SWP_NOZORDER);
    m_wndFileView.SetWindowPos(NULL, rectClient.left + 1, rectClient.top + cyTlb + 1, rectClient.Width() - 2, rectClient.Height() - cyTlb - 2, SWP_NOACTIVATE | SWP_NOZORDER);
    }