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

找了很多资料,都是针对对话框或者文档的,试了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; 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值