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

原创 2004年10月24日 12:17:00
 

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

VC单文档分割窗口3--重绘分割条

1.初始化分割条的大小,在CMySplitter的构造函数中添加如下程序。 CMySplitter::CMySplitter(void) { this->m_cxSplitter = 40;/...
  • chongxing01
  • chongxing01
  • 2013年04月21日 16:09
  • 438

MFC--自定义分割条颜色以及求分割条大小方法

窗口分割的方法在网上很容易找到,分割后出现的灰色默认分割条却很不美观,如图1所未.经过自己的查询和尝试,找到了改变它颜色的方法,效果如图2. 图1 图2 实现方法...
  • Mirage520
  • Mirage520
  • 2012年02月18日 13:42
  • 2870

MFC基于CSplitterWnd类的多窗口分割

使用平台:win7 64bit 使用环境:VS2012 1、CSplitterWnd介绍 上图是从MSDN中截取的类的继承图表,CSplitterWnd类继承自CWnd类。这个类主要就是提供窗口分...
  • Robin__Chou
  • Robin__Chou
  • 2015年11月21日 13:38
  • 7764

窗口分割及消息响应

MFC窗体视口分割及消息响应  一、 窗体视口分割方法:                                                 1、 在此处讲述的是对视口进行的静态分割。...
  • cddchina
  • cddchina
  • 2013年10月11日 17:24
  • 984

分割窗口以及CSplitterWnd类

分割窗口概述       分割窗口,顾名思义,就是将一个窗口分割成多个窗格,在每个窗格中都包含有视图,或者是同一类型的视图,或者是不同类型的视图。        MFC分割窗口的方式有两种...
  • gateway6143
  • gateway6143
  • 2014年06月24日 16:30
  • 954

CSplitterWnd窗口分割之——静态分割(一)

静态分割窗口在多文档和单文档里面非常简单,唯一要说的技术单文档窗口分割直接在MainFrm中,而多文档的窗口分割操作是要在ChildFrm中处理。          我今天想说的是在对话框窗口中如何使...
  • CSDNMicrosoftCSDN
  • CSDNMicrosoftCSDN
  • 2015年09月08日 17:47
  • 953

CSplitterWnd 隐藏分割条 不崩溃

CSplitterWnd可以很方便地创建分割器窗口。 要隐藏分割器窗口中的某个视图,只需调用: GetPane函数得到视图指针,然后调用ShowWindow函数隐藏窗口。 但是这样做只隐藏了视图...
  • EnterLly
  • EnterLly
  • 2014年12月26日 16:53
  • 893

使用CSplitterWnd类分割窗体,拆分窗体

VC++6.0使用CSplitterWnd类分割窗体,拆分窗体(图)     下载LOFTER客户端 晚上一个QQ技术群中的人提出了一个比较尖锐的问题,其尖锐性并不是...
  • hugyxh
  • hugyxh
  • 2015年08月08日 16:31
  • 656

CSplitterWnd窗口分割之——动态静态嵌套分割(二)

鉴于CSplitterWnd资料很少(MSDN上也说的很简单,Sample我也就不想吐槽了),同时网上博客又几乎是千篇一律的转载。现将个人的一点经验拿出来和大家分享,希望对他人有所帮助。不足之处还望批...
  • CSDNMicrosoftCSDN
  • CSDNMicrosoftCSDN
  • 2015年09月10日 17:03
  • 3328

MFC使用CSplitterWnd分割窗口的创建

使用CSplitterWnd分割窗口 csplitterwnd       csplitterwnd 类 提供分离窗口的功能,是一个窗口包含多个...
  • angxiao
  • angxiao
  • 2012年04月11日 13:32
  • 2459
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:扩展CSplitterWnd——实现隐藏分割条的功能
举报原因:
原因补充:

(最多只允许输入30个字)