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

2016-01-29 11:58 10 1 收藏

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

【 tulaoshi.com - C语言心得技巧 】

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

作者:刘良敏

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

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

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)

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

二、重载该类的OnMouseMove函数:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com)
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建立切分条对象:

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; } 
(全文完)

来源:http://www.tulaoshi.com/n/20160129/1484091.html

延伸阅读
标签: 黄金 设计
设计师在设计的时候,总会遇到这样那样的问题,和人PK不断,修改不断。界面区域多大合适呢?ICON多大?颜色区间多少?为什么这么定义?什么是普世的美?很多UIer都说,50%靠设计,50%靠交流,那么在交流的时候如何说服别人呢?ADS定位、用户群、用户环境、调研都可以作为参考的依据,在这里再向大家介绍一下我们身边存在的黄金分割,希望作为设计的利...
抛出第一个问题: 当你不能把它做得更美的时候,问题出在哪里? 我们还有没有其它办法突破和超越现有的设计瓶颈呢? 让我们走进神奇的自然界, 走进Kimberly Elam的Geometry of Design, 去认识那些存在于人与自然界中的基础规律。 松果、鲑鱼、人体 有什么共同的特点? 松果、鲑鱼、人体,它们都用些什么共同特点? 其实他们都有各种自...
标签: 软件教程
视频分割器是一款功能强大的视频分割工具。视频分割器几乎可以出理视频所有格式的文件。如果你想要将视频剪辑成几段分开看的话,可以使用这款软件实现,下面小编就教大家怎么使用视频分割器 步骤一:我们要安装和运行视频分割器
        前 言         适合于freehand7及更高版本。         利用节点吸附 (Snap to point) 和刻刀工具我们可以轻松的将相互交迭的对象分解成一个个独立的线段。最终效果图如下:   步骤一: 如上图所示,我...
标签: Web开发
[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

经验教程

477

收藏

40
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部