• 单文档与多文档


    (A)消息传递:

             当用户选择菜单命令时,消息首先传递给当前的视图,然后传递给当前文档,再传给当前模板,然后传给应用程序。如果消息在传递过程中被处理,那么消息将不再继续传递。在文档、视图应用程序中,经常利用视图类显示图形数据,而在文档类中保存数据。数据的存储一般在CDocument的派生类中进行串行化存储。数据显示在CView中实现。因此得到与视图相关的文档指针是数据显示的前提。

         在文档类中,经常添加数据成员以保存数据,有时在视图类中获取到数据以后需要传递给文档类的数据成员。这时,可以利用this->GetDocument()得到当前文档对象的指针,问候访问其数据成员,保存数据。

    (B)消息映射

      消息映射就是用来确定消息到来时那个函数去处理的一个映射集合。MFC的ClassWizard可以为类添加消息映射,但是有一些类并不可以用它来添加,需要用户手动添加。用户添加时应该吧消息映射添加到AFX_MSG_MAP后面。添加映射完成后,就需要在相应类中声明该函数,同时定义函数。

    (C)集合类介绍

      MFC类库的集合类包含3种数据结构,分别为:动态链表,动态数组,和字典。########

      动态链表提供有序的,非索引的双向链表。动态数组提供一个大小可变的,整数索引的对象数组。字典则把一个关键字与对象关联起来的集合。

      数组:CtypedPtrArray,链表:CtypedPtrlst;字典:CTyedPtrMap

      模板链表:istance

    #include <iostream>
    #include <afxtempl.h>//包含头文件
    
    using namespace std;
    
    class BASE
    {
        public:
            int x;
            int y;
    };
    
    CTypedPtrList <CPtrList,BASE *>m_list;//模板链表
    
    int main()
    {
        int i = 0;
        int x;
        int y;
        while(i == 0)
        {
            BASE *base1 = new BASE;
            cin>>x>>y;
            base1->x = x;
            base1->y = y;
            m_list.AddTail(base1);//添加到模板链表的尾部
            cin>>i;
        }
        POSITION pos = m_list.GetHeadPosition();//得到头部位置
        while(pos != NULL)
        {
            BASE *base2 = new BASE;
            base2 = m_list.GetNext(pos);//得到下一位置
            cout<<base2->x<<base2->y<<endl;
        }
        return 0;
    }

      串行化:实现数据存储在硬盘中,并可以方便的实现读取。实现对象输入到字节流,或者从字节流中读到对象。

    (D)常见问题

    1.文档和视图以及框架类通过模板类联系在一起

    CDocTemplate(UINT nIDResource,

                       CRuntimeClass * pDocClass,

            CRuntimeClass * pFrameClass,

            CRuntimeClass * pViewClass);

    2.可以进行串行化的类必须是由CObject或者其子类进行派生出来的类,并且串行化的输入输出顺序必须完全一致。

  • 相关阅读:
    【Win10开发】相对布局——RelativePanel控件
    【Win10开发】关于AutoSuggestBox
    【Win10开发】自定义标题栏
    线上服务器CPU100%排查
    Rest接口单元测试
    hibernate validator参数校验&自定义校验注解
    JsonView视图
    跨域(SpringBoot)
    Mybatis的分支选择和In循环
    CentOS6.5使用yum安装mysql
  • 原文地址:https://www.cnblogs.com/jiaoluo/p/3451714.html
Copyright © 2020-2023  润新知