扩展CSplitterWnd——实现隐藏分割条的功能

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

CSplitterWnd可以很方便地创建分割器窗口。

要隐藏分割器窗口中的某个视图,只需调用:

GetPane函数得到视图指针,然后调用ShowWindow函数隐藏窗口。

但是这样做只隐藏了视图窗口,没有隐藏分割条;

当程序框架尺寸变化后,程序会自动调用RecalcLayout函数,从而使得显示效果不正常。

CSplitterWnd没有提供设置分割条尺寸的public函数,通过分析CSplitterWnd的源码得知:

它里面有几个没有公开的受保护的成员变量:

m_cxSplitter,

m_cySplitter,

m_cxBorderShare,

m_cyBorderShare,

m_cxSplitterGap,

m_cySplitterGap,

m_cxBorlder,

m_cyBorlder

通过重新构造m_cxSplitterGap,m_cySplitterGap变量的值,就可以实现改变分割条尺寸的功能。

------------------------------------解决方案---------------------------------------------------------

1.从CSplitterWnd派生一个新类CMySplitterWnd;

2.在.h文件中添加成员变量和函数如下:

int m_cx;

int m_cy;

void HideSplitter();

void ShowSplitter();

3.在cpp文件中添加实现代码如下:

void CMySplitterWnd::HideSplitter()

{

m_cx=m_cxSplitterGap;//save previous cx

m_cy=m_cxSplitterGap;//save previous cy

m_cxSplitterGap=0;

m_cySplitterGap=0;

}

void CMySplitterWnd::ShowSplitter()

{

m_cxSplitterGap=m_cx;

m_cySplitterGap=m_cy;

}

4.使用新类CMySplitterWnd生成分割器窗口,在需要的时候调用HideSplitter、ShowSplitter函数即可。

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