MFC框架界面开发(二):框架界面的分隔窗口

介绍

框架界面中的窗口可以分隔成为多个子窗口,这一功能是通过拆分窗口类CSplitterWnd)实现的。拆分窗口类可以被看成是一个分割器,其覆盖整个框架父窗口的客户区。

实例

a)创建一个磁盘文件查看器

1.建立一个单文档项目,取消文档/视图结构支持选项;
2.添加两个类:

    class CLeftView:public CTreeView
    class CRightView:public CListView

3.在主框架类CMainFrame的头文件中,添加成员变量并去掉原有的CChildView类变量:

        CSplitterWnd m_split;   //分割器
    public:
        CLeftView *m_pLeftView;
        CRightView *m_pRightView;

在CMainFrame的OnSetFocus、OnCmdMsg、OnCreate函数中替换掉(或者注释掉)CChildView对象的相应代码。
4.添加虚函数OnCreateClient:

    BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
        if (!m_split.CreateStatic(this,1,2))//创建1行2列的分割器
        {
            return FALSE;
        }

        m_split.CreateView(0,0,RUNTIME_CLASS(CLeftView),
            CSize(150,0),NULL);//创建0行0列处的子窗口
        m_split.CreateView(0,1,RUNTIME_CLASS(CRightView),
            CSize(0,0),NULL);//创建0行1列处的子窗口

        //获得两个子窗口的指针    
        m_pLeftView=(CLeftView*)m_split.GetPane(0,0);
        m_pRightView=(CRightView*)m_split.GetPane(0,1);
        return TRUE;
    }

5.在CLeftView和CRightView类中,添加需要的变量,初始化函数OnInitialUpdate和其他消息映射函数。
(这里就相当于向两个子窗口里填充内容。)
6.实现效果:
这里写图片描述

b.创建PP邮箱界面

框架类的派生类也可以作为分割器的子窗口。
1.添加以下派生类:

    class CLeftView:public CTreeView
    class CRightView:public CRightFrame
    class CTopView:public CListView
    class CBottomView:public CHtmlView

2.修改CMainFrame类的头文件,按之前的方法去掉CChildView的相关代码,添加:

    CSplitterWnd m_split;

在OnCreate Client函数中:

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
        if (!m_split.CreateStatic(this,1,2))//创建1行2列的分割器
        {
            return FALSE;
        }

        m_split.CreateView(0,0,RUNTIME_CLASS(CLeftView),
            CSize(150,0),NULL);//创建0行0列处的子窗口
        m_split.CreateView(0,1,RUNTIME_CLASS(CRightFrame),
            CSize(0,0),NULL);//创建0行1列处的子窗口

        return TRUE;
    }

3.在子框架类CRightFrame中,添加分割器变量,并修改OnCreateClient虚函数,同上。

BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext)
    {
        if (!m_split.CreateStatic(this,2,1))//创建2行1列的分割器
        {
            return FALSE;
        }

        m_split.CreateView(0,0,RUNTIME_CLASS(CLeftView),
            CSize(0,210),NULL);//创建0行0列处的子窗口
        m_split.CreateView(1,0,RUNTIME_CLASS(CRightFrame),
            CSize(0,0),NULL);//创建1行0列处的子窗口

        return TRUE;
    }

4.在App类的头文件中添加四个类的变量指针并初始化,用于数据的交换;修改四个类的初始化函数和其他响应函数,已实现界面的显示和其他功能的设定。
5.效果显示:
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值