AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > VC编程

VC中分割窗口后如何限制分割条移动范围

51自学网 2015-08-30 http://www.wanshiok.com

  做一个项目,把一个单文档的窗口分割成左右两列,同时还需要设置左边窗口的最小尺寸。

  找了很多资料,都是针对对话框或者文档的,试了OnSizing和GetMinMaxInfo,结果对分割窗口无效。后来看到分割窗口的例子有锁定分割条的代码,跟同事讨论了一下,来了灵感。下面是解决办法,其实很简单的,可能以前有人做过吧,不过我在网上没有搜索到,所以把我的做法写出来跟大家分享。

  一、新建一个类CMySplitter,基类为CSplitterWnd

  二、重载该类的OnMouseMove函数:

void CMySplitter::OnMouseMove(UINT nFlags, CPoint point) {   // 限制切分条的运动范围。   if(point.x<228||point.x>600)   {    CWnd::OnMouseMove(nFlags, point);   }   else   {    CSplitterWnd::OnMouseMove(nFlags, point);   }  }

  三、 然后就可以跟一般的窗口分割那样去做了,if(point.x<228||point.x>600)这里的范围可以随你去设置了,够简单吧。

  四、切分窗口

  切分窗口就不用讲那么详细了,在MaiFram.h建立切分条对象:

protected:  CMySplitter m_wndSplitter; //切分窗口对象  //在MaiFram.cpp中实现窗口切分:  BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT /*lpcs*/,CCreateContext* pContext)  {   // 创建拆分器窗口   if (!m_wndSplitter.CreateStatic(this, 1, 2))    return FALSE;   if (!m_wndSplitter.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(228, 100), pContext) ||    !m_wndSplitter.CreateView(0, 1, RUNTIME_CLASS(CDataEditView), CSize(100, 100), pContext))   {    m_wndSplitter.DestroyWindow();    return FALSE;   }   return TRUE;  } 

 

 

 
说明
:本教程来源互联网或网友上传或出版商,仅为学习研究或媒体推广,wanshiok.com不保证资料的完整性。
上一篇:关于MFC下检查和消除内存泄露的技巧  下一篇:VC++6.0实现视频数据实时获取的探讨