MFC无文档多视应用程序框架

本文介绍了如何在MFC中创建一个无文档多视图应用程序,通过删除不必要的MDI组件,添加自定义的管理工具栏窗口,并实现树形控件与FormView之间的交互。步骤包括移除默认框架、添加DialogBar对话框、插入多个FormView资源、建立树形控件及处理点击事件,最后讨论了资源管理以优化性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

///

//Author:  aaashun

//Date:    23/2/2009

//Email:   aaashun@gmail.com

///

大多数情况下MFC的MDI模板为开发多窗口或多文档应用程序提供了很大的方便,但有时MFC向导生成的框架并非是我们需要的,怎么办?对MFC生成的框架动手术吧。本文以多视(无文档)为例说明手术的关键部分,讲的有点乱,如果需要源码请来邮件索要。

 

最终效果图:


 

1.选择MDI类型,去掉文档视图关联支持


2.一路next,子窗口类型样式选择最大化

 

3.去掉CChildView类

删除ChildView.h和ChildView.cpp两个文件,去掉CChildFrame里的几个重写(Dump等)、几个消息响应(WM_CREATE等)和一个事件响应(IDC_FILE_CLOSE等)。

4.去掉IDC_FILE_NEW在App类中响应

5.增加ShunStdAfx.h头文件并在stdafx.h里 include一下,我会把自定义的一些东西放在这个文件里。

 

至此已经把VC生成的框架程序删减的差不多了,保证编译通过再进行下边的工作--开始添加。

二、接下来开始做左边的管理工具栏窗口。

1.增加DialogBar类型对话框,并为之增加类CManageBar,从CDialog派生(因为找不到CDialogBar)

2.替换ManageBar.h和ManageBar.cpp文件里的CDialog为CDialogBar

修改构造函数如下:

      CManageBar::CManageBar(CWnd* pParent /*=NULL*/)

                  : CDialogBar()

3.为CMainFrame添加成员CManageBar m_wndManageBar,并在OnCreate中添加相应代码创建并把它show出来:

    if (!m_wndManageBar.Create(this, IDD_DIALOGBAR,

        CBRS_LEFT | CBRS_SIZE_DYNAMIC, AFX_IDW_DIALOGBAR))

    {

        TRACE0("Failed to create dialogbar/n");

        return -1;

    }

    m_wndManageBar.EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&m_wndManageBar);

编译运行 报错 winfrm2.cpp 92 行,看提示

// assert fails when initial CBRS_ of bar does not

// match available docking sites, as set by EnableDocking()

原来是窗口不允许停靠,这样在停靠ManageBar的代码前面得加一句让窗口允许停靠。

    EnableDocking(CBRS_ALIGN_LEFT);

三、添加三个FormView资源

1.添加三个FormView资源并添加相应类分别为:

IDD_FORMVIEW_ADMIN,     CAdminView

IDD_FORMVIEW_CONSUMER, CConsumerView

IDD_FORMVIEW_GROUP,     CGroupView

注意这三个类都是从CFormView类里派生出来

四、在ManageBar上添加树形控件

1.添加树形控件ID为IDC_TREE_MANAGEBAR,关联一个成员变量m_tree

2.为CManageBar添加成员函数InitTreeCtrl,完成控件的初始化工作

HRESULT CManageBar::InitTreeCtrl(

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值