扩展CSplitterWnd——实现隐藏分割条的功能
来源:互联网 发布:淘宝定制产品能退货吗 编辑:程序博客网 时间:2024/05/09 17:53
Create动态拆分:
动态拆分是对同一个视图进行分隔,各个分隔窗口内容相同,但各自独立控制视野范围,可以显示同一文档的不同部分,允许分隔的窗口内有一个分隔条,可用鼠标拖拽分隔条调整各窗口大小和数目,但不超过 2行×2列。
CreateStatic静态拆分:
静态拆分的窗口个数一开始就是固定的,各窗口可以显示不同的视图对象,每个窗口的活动完全独立,有属于自己的水平 滚动条和垂直滚动条,分隔条可以移动但不能消失,静态拆分的窗口个数上限是 16行×16列。
2.隐藏某视图
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函数即可。
解决方案2:
//保存分割条的位置
m_wndSplitter1.GetColumnInfo(0,scx,smcx);
//设置分割条在最左边
m_wndSplitter1.SetColumnInfo(0,0,0);
LeftView->ShowWindow(SW_HIDE);
RightView->ShowWindow(SW_MAXIMIZE);
m_wndSplitter1.HideSplitter();
m_wndSplitter1.RecalcLayout();
3.
virtual BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle = WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );
virtual BOOL CreateStatic( CWnd* pParentWnd, int nRows, int nCols, DWORD dwStyle = WS_CHILD | WS_VISIBLE, UINT nID = AFX_IDW_PANE_FIRST );
virtual BOOL CreateView( int row, int col, CRuntimeClass* pViewClass, SIZE sizeInit, CCreateContext* pContext );
AFX_IDW_PANE_FIRST 是默认nID,用于一层分割时。多层分割需要父窗口调用int IdFromRowCol( int row, int col ) const;函数得到row行col列的窗口id号。
- 扩展CSplitterWnd——实现隐藏分割条的功能
- 扩展CSplitterWnd——实现隐藏分割条的功能
- 扩展CSplitterWnd——实现隐藏分割条的功能
- CSplitterWnd 隐藏分割条 不崩溃
- mfc 窗口分割 CSplitterWnd扩展类实现隐藏/显示列Pan
- CSplitterWnd扩展类实现隐藏/显示列Pan
- 【CSplitterWnd技巧一】改变分割窗口拖动条的大小
- 【CSplitterWnd技巧一】改变分割窗口拖动条的大小
- CSplitterWnd窗口分割之——静态分割(一)
- vc6.0不用鼠标拖动CSplitterWnd的分割条,用代码改变分割窗口
- 锁定CSplitterWnd分割的窗口
- 【CSplitterWnd技巧三】能拖动的带背景颜色的分割条
- MFC使用CSplitterWnd分割窗口的创建
- CSplitterWnd分割窗口的有关问题
- CSplitterWnd窗口分割之——动态静态嵌套分割(二)
- MFC的窗口分割的设计与实现以及CSplitterWnd 类分析
- MFC的窗口分割的设计与实现以及CSplitterWnd 类分析
- 让 Chrome 隐藏滚动条的扩展——Thin Scroll Bar
- 构建基本的嵌入式Linux根文件系统
- as3 声音控制
- 理解欧几里德
- wpf开发积累
- spring配置文件完整版
- 扩展CSplitterWnd——实现隐藏分割条的功能
- overflow知多少
- 我总是这样,一个人默默的承受悲伤:QQ伤感日志
- MySQL数据库优化
- 过去的记忆,已经无动于衷:QQ空间伤感日志
- 用Java Mail和Commons-email发简单的邮件
- 堆排序2——优先级队列
- ResourceBundle Editor国际化插件安装教程
- 指针和引用的区别总结