loading ...
loading...

2007-03-06 | 扩展CSplitterWnd——实现隐藏分割条的功能

分享
标签: 函数  分割器  分割  隐藏 
扩展CSplitterWnd——实现隐藏分割条的功能

发表日期:2007-2-06
更新日期:2007-2-06
作者文章阅读次数:444

源自:阳光 (个人网站) 标签:c/c++

您认为本文应该得 12345      打印|收藏|讨论|投诉0082c792-b939-456a-8409-1156cea22665

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函数即可。

分享 分享 |  评论 (0) |  阅读 (?)  |  固定链接 |  发表于 12:28
搜狐博客温馨提示:警惕博客留言诈骗, 搜狐博客管理员的正确地址为http://admin.blog.sohu.com, 其他都是冒牌。搜狐博客官方不会要求参加活动的各位博友缴纳任何的手续费用。请勿轻信留言、评论中的中奖信息,更不要拨打陌生电话及向陌生帐户汇款,谨防受骗!识别更多网络骗术,请 点击查看详情
您还未登录,只能匿名发表评论。或者您可以 登录 后发表。
 
  注册会员,数码相机 iPod nano等超多好礼免费拿!(倒计时:仅剩8天)
表  情:
加载中...
回复通知: 同时用小纸条通知对方该回复