m_wndSplitterX.CreateStatic(this, 2, 1);
//CInvRecordList继承CListView
m_wndSplitterX.CreateView(1,0,RUNTIME_CLASS(CInvRecordList), CSize(0,30), NULL); m_wndSplitterY.CreateStatic(&m_wndSplitterX, 1, 2, WS_CHILD|WS_VISIBLE, m_wndSplitterX.IdFromRowCol(0, 0)); 
//CInvItemTree继承CTreeView
m_wndSplitterY.CreateView(0,0,RUNTIME_CLASS(CInvItemTree), CSize(50,50), NULL);
//CInvItemDetailList继承CListView
m_wndSplitterY.CreateView(0,1,RUNTIME_CLASS(CInvItemDetailList), CSize(0,50), NULL);
//IDC_EDITSPLITTER是EDIT CONTROL
CRect rect;
GetDlgItem(IDC_EDITSPLITTER)->GetWindowRect(&rect);
ScreenToClient(&rect);
m_wndSplitterX.MoveWindow(&rect); m_wndSplitterX.SetRowInfo(0, 150, 0);
//m_wndSplitterX.SetRowInfo(1, 150, 100);
m_wndSplitterX.RecalcLayout();创建m_wndSplitterX和m_wndSplitterY,在EDIT CONTROL中形成一个三叉分割窗口,现在需要让这三个分割窗口随着主窗口的拖动改变大小,请教大家,多谢啦!

解决方案 »

  1.   

    WM_SIZE来处理控件大小随窗体大小改变
    用SetWindowPos
      

  2.   

    汗,解决了,伤心,浪费分了
    //splitterX
    hDWP = BeginDeferWindowPos(10);
    m_wndSplitterX.GetWindowRect(&rcControl);
    hDWP = DeferWindowPos(hDWP,m_wndSplitterX.GetSafeHwnd(), NULL, 0, 0, rcControl.Width() + iDeltaX, rcControl.Height() + iDeltaY, SWP_NOMOVE | SWP_NOZORDER);
    EndDeferWindowPos(hDWP);
    //splitterY
    hDWP = BeginDeferWindowPos(10);
    m_wndSplitterY.GetWindowRect(&rcControl);
    hDWP = DeferWindowPos(hDWP,m_wndSplitterY.GetSafeHwnd(), NULL, 0, 0, rcControl.Width() + iDeltaX, rcControl.Height() + iDeltaY, SWP_NOMOVE | SWP_NOZORDER);
    EndDeferWindowPos(hDWP);
    就是这样子。csdn怎么没有人气
      

  3.   

    //csdn怎么没有人气??这个问题,版上搜下,答案有一堆,呵呵
      

  4.   

    楼主自己的解决方案太不专业了,两次移动窗口竟然用到 DefWindowPos,汗。而且用法不对,BeginXXX 和 EndXXX 只用在开始和结束使用一次,中间就别用了,用在中间,还不用直接用 MoveWindow 省代码……