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

王朝vc·作者佚名  2006-01-17
窄屏简体版  字體: |||超大  

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

作者:刘良敏

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

找了很多资料,都是针对对话框或者文档的,试了OnSizing和GetMinMaxInfo,结果对分割窗口无效。

后来看到分割窗口的例子有锁定分割条的代码,跟同事讨论了一下,来了灵感。下面是解决办法,其实很简单的,

可能以前有人做过吧,不过我在网上没有搜索到,所以把我的做法写出来跟大家分享。

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

二、重载该类的OnMouseMove函数:

void CMySplitter::OnMouseMove(UINT nFlags, CPoint point)

{

// 限制切分条的运动范围。

if(point.x<228||point.x600)

{

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;

} (全文完)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航