科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件扩展CSplitterWnd——实现隐藏分割条的功能

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

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

CSplitterWnd可以很方便地创建分割器窗口。 要隐藏分割器窗口中的某个视图,只需调用: GetPane函数得到视图指针,然后调用ShowWindow函数隐藏窗口。

作者:阳光 来源:CSDN 2008年3月23日

关键字: C C++ CSplitterWnd 隐藏分割条 Linux

  • 评论
  • 分享微博
  • 分享邮件

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

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章