小弟用CSplitterWnd拆分窗口成两个窗口,但我想用户不能够任意拉动拆分后窗口的大小,请指点一下,谢谢!

解决方案 »

  1.   

    在WM_SIZE消息中加入
    SetWindowPos(0,0,0,0,SWP_NOMOVE||SWP_NOSIZE);
      

  2.   

    derive your CXSplitterWnd Class from CSplitterWnd Class ,and overide OnLButtonDown and OnLButtonMouseMove function.
    CXSplitterWnd::OnLButtonDown(...)
    {
           ...
    }
    CXSplitterWnd::OnMouseMove(...)
    {
            ..
    }
      

  3.   

    对,你在继承一个类,其中有个参数设置为m_bTrack = false;(设为True,是可以拖动的。)
    你再查一查m_bTrack
      

  4.   

    也就是kingzai(studying C#) 所说方法,我来仔细说说:这样做:首先,不能使用原有的CSplitterWnd来定义m_wndSplitter对象,而是要从CSplitterWnd类派生一个自己的切分类——CMySplitterWnd然后用这个CMySplitterWnd类在MainFrm.h中定义m_wndSplitter对象。接着,添加自己派生类的这样两个消息函数
    void CMySplitterWnd::OnLButtonDown(UINT nFlags, CPoint point)
    {
      //CSplitterWnd::OnLButtonDown(nFlags, point);//把原有的这行注释掉
      //也就是说让这个函数什么也不做。
    }void CMySplitterWnd::OnMouseMove(UINT nFlags, CPoint point)
    {
      //CSplitterWnd::OnMouseMove(nFlags, point);//注释掉
    }这样方可实现固定位置。原来直接用CSplitterWnd来定义m_wndSplitter对象,就无法从载
    上面两个消息函数,并让其正确相应(这是原因所在)。试试吧。
      

  5.   

    override :WM_LBUTTONDOWN,WM_MOUSEMOVE,WM_SETCURSORvoid CLockableSplitter::OnLButtonDown(UINT nFlags, CPoint point) 
    {

    CWnd::OnLButtonDown(nFlags, point);


    }void CLockableSplitter::OnMouseMove(UINT nFlags, CPoint point) 
    {

    CWnd::OnMouseMove(nFlags, point);}BOOL CLockableSplitter::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
    {

    return CWnd::OnSetCursor(pWnd, nHitTest, message);

    }
      

  6.   

    zhdleo(叮东) 分析得很对!