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

航空母舰645

航空母舰645

2016-01-29 11:58

分割窗口后如何限制分割条的移动范围,分割窗口后如何限制分割条的移动范围

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

作者:刘良敏

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

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

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

二、重载该类的OnMouseMove函数:

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)
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.x600)这里的范围可以随你去设置了 ^_^,够简单吧。

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

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/cyuyanjiaocheng/)
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; } 
(全文完)
展开更多 50%)
分享

猜你喜欢

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

C语言教程 C语言函数
分割窗口后如何限制分割条的移动范围

股票分割时间-什么是股票分割?

生活常识
股票分割时间-什么是股票分割?

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用VC6.0实现窗口的任意分割

C语言教程 C语言函数
使用VC6.0实现窗口的任意分割

协议离婚中财产分割关于房产如何划分 离婚财产如何分割

离婚
协议离婚中财产分割关于房产如何划分 离婚财产如何分割

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

离婚时财产如何分割呢?离婚财产分割法则

离婚 情感
离婚时财产如何分割呢?离婚财产分割法则

协议离婚中需要注意的财产分割事项 离婚财产如何分割

离婚 生活小常识
协议离婚中需要注意的财产分割事项 离婚财产如何分割

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《梦幻之星 新星》各职业天赋分析及刷BOSS心得

《梦幻之星 新星》各职业天赋分析及刷BOSS心得

从资源中加载皮肤

从资源中加载皮肤
下拉加载更多内容 ↓