CConferenceView是CView视图,CTextView 是基于CFormView类的视图,当改变分辨率或最小化时,CFormView视图会产生滚动条显示,如何让它不产生滚动条,而完全显示?代码如下:BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) 
{  m_CreatedOK = m_wndSplitter1.CreateStatic(this, 2, 1);
if(m_CreatedOK){
m_CreatedOK = m_wndSplitter1.CreateView(1, 0, RUNTIME_CLASS( CTextView ), 
CSize(0, 0), pContext);
if(m_CreatedOK){
m_CreatedOK = m_wndSplitter2.CreateStatic(&m_wndSplitter1, 1, 2, 
WS_CHILD | WS_VISIBLE, m_wndSplitter1.IdFromRowCol(0, 0));
if(m_CreatedOK){
m_CreatedOK = m_wndSplitter2.CreateView(0, 0, 
RUNTIME_CLASS(CToolView), CSize(60, 0), pContext);
if(m_CreatedOK){
m_CreatedOK = m_wndSplitter2.CreateView(0, 1, 
RUNTIME_CLASS(CConferenceView), CSize(0, 0), pContext);
setLayout();//设置高度
}
}
}
}
m_wndSplitter2.SetActivePane(0,1,NULL); return m_CreatedOK ==0 ? false : true;

void CMainFrame::setLayout()
{
if(m_CreatedOK){
if(m_wndSplitter1.m_hWnd){ int cy0, cy1, cymin, cy;
m_wndSplitter1.GetRowInfo(0, cy0, cymin);
m_wndSplitter1.GetRowInfo(1, cy1, cymin);
cy = cy0 + cy1;
int minCy0 = (int)(cy * 0.72); if(cy0 != minCy0){
cy0 = minCy0;
m_wndSplitter1.SetRowInfo(0, cy0 , cymin);
}
m_wndSplitter1.RecalcLayout();
}
}
}

解决方案 »

  1.   

    把CFormview对应的对话框资源调到最小,然后在ONsize中自动调整Formview大小
      

  2.   

    Sorry!!不是"CFormView视图会产生滚动条显示"而是"CTextView视图会产生滚动条显示"
      

  3.   

    CRect rect;
    GetClientRect(&rect);
    MoveWindow(&rect);
      

  4.   

    你的CTextView不是基于Cformview的么?我说的就是这个(CTextView),它对应不是有个对话框资源么?
      

  5.   

    能不能用这种思路:CConferenceView的高度=屏幕高度-CTextView高度
      

  6.   

    那多麻烦了,直接取得view对应的客户区大小(GetClientRect),然后将窗口拉这么大就可以了,放在每个view的OnSize中自动调整
      

  7.   

    我试了,不行啊,里面的内容全部覆盖了,我还是觉得这种思路好一点:CConferenceView的高度=屏幕高度-CTextView高度 ,让CConferenceView的高度动态改变,而CTextView高度不变
      

  8.   

    要想里面的内容排列整齐,那就动态调整每个控件的位置,还是在OnSize里你说的方法可以试一下,在你的setLayout() 函数里,比如固定高300CRect rect; 
    GetClientRect(&rect);//取得整个客户区大小 m_wndSplitter1.SetRowInfo(0, rect.Width()-300, 20); 
    m_wndSplitter1.SetRowInfo(1, 300, 300);