MFC框架界面开发(五):基于文档模板架构的软件

介绍

文档模板类(CDocTemplate)将视图类(CView)、框架类(CFrameWnd)和文档类(CDocument)捆绑在一起。文档模板将类型消息在注册表中进行注册,使得在双击文档类型的文件时,操作系统根据注册信息找到执行文件启动进程并加载该文档。

实例

创建一个简单版画图软件。

1.创建一个多文档项目,选择文档/视图架构支持;
2.在向导页中填写文档拓展名:md;设置项目类型为“标准MFC”;选择静态链接库;在向导页最后一页,选择CScrollView作为视图类;
3.在资源视图中编辑工具栏资源,添加其ID;
4.添加一个普通类CLayer,修改其头文件,使其成为一个抽象类(=0)。
5.添加CLayer的派生类,用于不同形状的绘制图层。如CRectan。
6.修改所有基类中的虚函数(去掉=0)并添加成员变量,编写成员函数代码。

void CRectan::Serialize(CArchive& ar)
{
    if (ar.IsStoring())
    {
        ar<<m_rect;
    }
    else
    {
        ar>>m_rect;
    }
}

void CRectan::OnLButtonDown(UINT nFlags,CPoint point)
{
    m_rect.left=point.x;
    m_rect.top=point.y;
    //按下鼠标时,以该点作为矩形左上角
}

void CRectan::OnMouseMove(UINT nFlags,CPoint point,CDC* pDC)
{
    if (!(nFlags & MK_LBUTTON))
    {
        return;
    }
    //如果移动鼠标的同时,鼠标左键处于按下状态
    pDC->SetROP2(R2_NOT);//两次取反绘图就可以擦去不需要的过程图像
    pDC->SelectStockObject(NULL_BRUSH);
    if (m_rect.right>=0)
    {
        pDC->Rectangle(m_rect);//擦除上一次绘制的图形
    }
    m_rect.right=point.x;
    m_rect.bottom=point.y;
    pDC->Rectangle(m_rect);//绘制图形
}

void CRectan::OnLButtonUp(UINT nFlags,CPoint point)
{
    //松开鼠标时,以该点作为矩形的右下角坐标
    m_rect.right=point.x;
    m_rect.bottom=point.y;
    m_rect.NormalizeRect();
}

void CRectan::OnDraw(CDC *pDC)
{//用于每次界面的更新
    pDC->Rectangle(m_rect);
    if (STU_SELECT==m_nStatus)
    {
        pDC->FillSolidRect(m_rect.left-3,m_rect.top-3,6,6,GetSysColor(COLOR_HIGHLIGHT));
        pDC->FillSolidRect(m_rect.right-3,m_rect.top-3,6,6,GetSysColor(COLOR_HIGHLIGHT));
        pDC->FillSolidRect(m_rect.left-3,m_rect.bottom-3,6,6,GetSysColor(COLOR_HIGHLIGHT));
        pDC->FillSolidRect(m_rect.right-3,m_rect.bottom-3,6,6,GetSysColor(COLOR_HIGHLIGHT));
    }
}

7.修改CLayer类的源文件,添加Create函数的代码,用于创建不同图形的类对象。
8.修改CmdView类的头文件,添加成员变量,修改初始化函数;为工具项添加消息映射函数,用于显示选择状态。
9.在CDoc类中添加管理图层信息的成员变量。
10.在CmdView类中添加鼠标的消息映射函数;修改OnDraw函数;内嵌派生类的函数。
11.在CmdDoc类中修改序列化函数,内嵌派生类的序列化函数;添加虚函数DeleteContents,用于关闭文档时清理内存。

解释画橡皮线的原理的博文:http://blog.csdn.net/zyq11223/article/details/8271006?locationNum=15

MFC自定义界面HUI,高效简单,含详细注释和示例。 HUI包括基本控件、按钮、标签、编辑框、表格、悬停提示等,可组合出更多功能。资源占用少,效率高,能在低端机上运行,流畅不闪烁,完全满足工控等各种专业软件实现个性化要求。 本资源是“http://download.csdn.net/detail/hhhh63/6961889”的正式发布版。包括3个项目,Hui、HuiDemo1和HuiDemo2。 一、Hui项目 本项目是DLL项目,包括完整的界面库,使用双缓存,局部重画等技术,性能优异。为保证在不同的MFC版本中使用,本次上传提供了这部分的源码,一般不要对其改动。 二、HuiDemo1 简单的应用示例,包括窗口分割,控制面板和主显示区等,展示控件各方向停靠、自动充满、全屏切换、记忆窗口位置和大小、选项设置和保存注册表等功能,用户可直接以此为基础开发新项目。如需扩展其它功能,可从HuiDemo2查找复制相应代码。 三、HuiDemo2 除HuiDemo1的所有功能外,还包括界面库的全部功能和其它实用扩展功能,左中右三栏式分布,左右固定宽度,中间栏大小可变。 1、左边是属性栏,固定宽度,上边是时钟,下边是鼠标信息,当鼠标移到中间的图像区时显示鼠标位置和图像值。 2、中间是图像区,演示如何动态生存索引图像,从下向上移动,自适应大小,长宽比不变,点右边的调色板按钮改变颜色,点保存按钮把当前图像保存到桌面。 3、右边上边是控制栏,在中间的图像区中画各种几何图形,并计算几何图形包围的图像数据的最大值,最小值和平均值。 4、右边下边是表格演示,显示Windows文件夹下的文件列表,自动充满窗口区,随窗口大小改变显示项数,保证界面美观,最下面是搜索和定位功能。 四、运行环境,VC2010或更高版本。 欢迎大家下载并提意见,本资源版权归作者所有,分享供大家研究学心,不得用于商业用途,如有特殊要求请与本人联系。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值