在SDI中的TAB控件如何随着主窗口的大小变化.

解决方案 »

  1.   

    响应OnSize函数,利用MoveWindow来控制TAB控件的大小和位置
      

  2.   

    这个问题讨论过很多次了,搜索一下估计有很多答案响应WM_SIZE消息,一个例子:
    void COracleAssistView::OnSize(UINT nType, int cx, int cy) 
    {
    CFormView::OnSize(nType, cx, cy); CRect rect;
    GetClientRect(&rect);

    int nWidth = rect.Width();
    int nLeight = rect.Height();
    if(m_edit.GetSafeHwnd())
    { m_edit.SetWindowPos(this,rect.left + nWidth/100,rect.top +nLeight/100,nWidth-nWidth/100*2,nLeight/100*45,SWP_SHOWWINDOW|SWP_NOZORDER);
    } if(m_btnExec.GetSafeHwnd())
    {
    m_btnExec.SetWindowPos(this,rect.left + nWidth/100*40,
    rect.top + nLeight/100*47,nWidth/15,nLeight/100*5 ,SWP_SHOWWINDOW|SWP_NOZORDER);

    }

    if(m_ctrList.GetSafeHwnd()) //m_ctrlList是listctrl的变量
    {  m_ctrList.SetWindowPos(this,rect.left + nWidth/100,
    rect.top + nLeight/100*58,nWidth-nWidth/100*2,nLeight/100*52,SWP_SHOWWINDOW|SWP_NOZORDER);

    } }
      

  3.   

    在主窗口发生变化时move tabctrl
      

  4.   

    VC工作区里的视图部分就是一个例子,看下面是怎么实现的:
    http://www.vckbase.com/document/viewdoc/?id=257
      

  5.   

    http://community.csdn.net/Expert/topic/3339/3339979.xml?temp=.1871454
      

  6.   

    同步用WM_sizing,不是同步用WM_size
      

  7.   

    如果是用gtk编程,你就不用考虑这方面的问题
    vc需要自己控制
    在wm_sizing时用movewindow控制控件位置
      

  8.   

    同步用WM_sizing,不是同步用WM_size
    这个挺重要。
      

  9.   

    也可以用SetWindowPos()函数。或者MoveWindow()
      

  10.   

    响应WM_SIZE消息,然后SetWindowPos MoveWindow成比例改变大小