当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 分割窗口后如何限制分割条的移动范围

VC++
面试题目:猫吃老鼠问题的求解
一个最基本的有限元计算程序
简单的表达式求值
C程序移植到VC开发环境下
一个小语言的词法分析程序
A/B 向上取整的方法
马走日棋盘算法
一种随机抽题的简单算法
clone模式在平衡排序二叉树实现中的应用
递归的应用 -- 最简单分形图形实现
比较数据排序前后的查找次数
根据前序和中序序列生成二叉树
如何用CZip/CUnzip类压缩/解压缩文件
使用 random_shuffle() 算法随机化序列元素
Ceb解除打印屏蔽实战
基于SHA-256的HMAC文件校验器
模拟信息加密流程图简介
关于数据校验
浅谈利用RSA算法防止非法注册机的制作
加密它:用新的高级加密标准(AES)保持你的数据安全

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 79 ::
收藏到网摘: n/a

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

作者:刘良敏

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

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