我是这样的一个分割方法 
用CSplitterWnd将MainFrm分割成2个部分 左边和右边 左边创建一个CLeftView继承于CFormView
  ——————————
  |         |        |
  |         |        | 
  |LeftView |        |
  |         |        | 
  |         |        |
  |         |        |
 ---------------------
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs,CCreateContext* pContext)
{
if (!m_wndSplitter.CreateStatic(this, 1, 1))
{
TRACE0("Failed to CreateStaticSplitter\n");
return FALSE;
}
if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(400, 0), pContext))
{
TRACE0("Failed to create first pane\n");
return FALSE;
}
}class CLeftView : public CFormView现在发现 我拖动中间的spliter正常刷新 但是我鼠标也可单独拖动leftview大小 那么就会出现重影 
怎么解决呢 我想固定leftview不能拖动 这个该重载什么方法呢 
谢谢大家指导 

解决方案 »

  1.   

    响应主框架类的WM_SIZE消息,利用CSplitterWnd::SetColumnInfo()来设置你的leftView的大小,然后调用CSplitterWnd::RecalcLayout();
      

  2.   

    关键是拖动中间的分割栏不会有问题 leftview会随着分割兰的拖动而变化
    但是如果仅仅改变leftview大小 而不动分割栏就不对了 这样的操作也不因该被允许啊
    例如  我把frm分成左右两块 左边嵌入了CFromview, 我拖动中间的分割符 但是我也可以拖动左边的Fromview 这样的拖动view因该是不被允许的 
    怎么禁止左边的嵌入view不能拖动 固定大小???
      ——————————
      |       |        |
      |       |        |  
      |       |        |
      |       |        |  
      |       |        |
      |       |        |
     ---------------------
      

  3.   

    大家可有浩方法 让左边的view不能随意拖动
      

  4.   

    分割栏允许拖动 只是不给拖动左边嵌入的leftview
    因为分割栏和view是2个不同的东西 即使限制了分割兰 那leftview也可以拖动大小啊 就可能拖动到分割栏外了 555
    或者是不是把分割兰和view级练起来 当拖动view时 分割栏也会同时动
      

  5.   

    你固定leftview,即不想改变leftview的size,当你拖动分隔条的时候,是可以拖动的,但是释放鼠标以后,分隔条又会回到原来的位置上??是这样吗?
      

  6.   

    不是的 就是全部固定不给拖动吧
    这么说 我在spliter左边嵌入了Leftview
    现在不仅不允许拖动splter 也不允许拖动leftview第一条是leftview的边界 而第二条是spliter
    不能允许view在左边的区域里随意拖动 spliter也不给拖动 不知道这样可描述清楚了
       ||
       ||   
       ||
       ||   
       ||
       ||
      

  7.   

    现在不仅不允许拖动splter 
    ------------------------
    重载CSplitterWnd类,自己需要处理WM_LBUTTONDOWN,WM_SETCURSOR,WM_MOUSEMOVE
    void CNewSplitterWnd::OnLButtonDown(UINT nFlags, CPoint point) // WM_LBUTTONDOWN

     return; 

    BOOL CNewSplitterWnd::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) // WM_SETCURSOR

     return FALSE; 

    void CNewSplitterWnd::OnMouseMove(UINT nFlags, CPoint point) // WM_MOUSEMOVE

     CWnd::OnMouseMove(nFlags, point); 
    } 也不允许拖动leftview
    参考2#
      

  8.   

    响应主框架类的WM_SIZE消息,利用CSplitterWnd::SetColumnInfo()来设置你的leftView的大小,然后调用CSplitterWnd::RecalcLayout();
    您说得是参考这个不 
    呵呵 这样并没有禁止leftview拖动啊 
    上面的我都能看懂 但是您说的这个是什么意思 谢谢啊
      

  9.   

    把leftview的边界属性去掉。
    如果有资源,就在资源里把Boder属性设成无
      

  10.   

    to hcyang(肥肥) 
    强人 一句话点醒梦中人 刚才讨论了半天都不在电子上
     
      

  11.   

    如需要阅读该回复,请登录或注册CSDN!