MFC单文档视图架构

简介: MFC单文档视图架构

一、特点


只能管理一个文档


二、相关类


CWinApp / CFrameWnd / CView / CDocument - 文档类


CDocManager - 文档管理类  


CDocTemplate - 文档模板类


CSingleDocTemplate - 单文档模板类


三、实例


1、添加三大框架,动态创建


class CMyDoc :public CDocument {
       DECLARE_DYNCREATE(CMyDoc)
};
IMPLEMENT_DYNCREATE(CMyDoc,CDocument)
class CMyView :public CEditView {
       DECLARE_DYNCREATE(CMyView)
};
IMPLEMENT_DYNCREATE(CMyView, CEditView)
class CMyFrameWnd :public CFrameWnd{
       DECLARE_DYNCREATE(CMyFrameWnd)
};
IMPLEMENT_DYNCREATE(CMyFrameWnd,CFrameWnd)


2、添加应用框架,手动创建


class CMyWinApp:public CWinApp {
public:
       virtual BOOL InitInstance();
};
CMyWinApp theApp;
BOOL CMyWinApp::InitInstance() {
       //单文档模板类对象
       CSingleDocTemplate* pTemplate = new CSingleDocTemplate(IDR_MENU1,  RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CMyFrameWnd), RUNTIME_CLASS(CMyView));
       AddDocTemplate(pTemplate);
       OnFileNew();
       m_pMainWnd->ShowWindow(SW_SHOW);
       m_pMainWnd->UpdateWindow();
       return TRUE;
}


3、运行报错,需要添加字符串表


0a2653c851af460fa595bd959398a8f1.png


4、添加字符串表,右击资源,添加string table


0eacb84100b54626af849e6b562bf92a.png


5、运行结果:


2d65d23f6d4748949b924e4057485923.png


6、关系图


theApp


|->m_pDocManager //文档管理类对象地址
              |->m_templateList
                       |->CSingleDocTemplate* pTemplate
                               |->m_pOnlyDoc //文档类对象地址
                               |->m_pDocClass
                              //文档类的静态变量的地址RUNTIME_CLASS(CMyDoc)
                               |->m_pFrameClass
                             //框架类的静态变量的地址RUNTIME_CLASS(CMyFrameWnd)
                               |->m_pViewClass
                             //视图类的静态变量的地址RUNTIME_CLASS(CMyView)


7、OnFileNew函数的执行过程


通过theApp获取文档管理类对象地址(m_pDocManager)


通过文档管理类对象地址(m_pDocManager)获取一个链表成员(m_templateList)并从链表中获取单文档模板类对象(pTemplate)


利用单文档模板类对象(pTemplate)获取文档类的静态变量地址,并调用对象加工厂函数,动态创建文档类对象,并返回对象地址。


利用单文档模板类对象(pTemplate)获取框架类的静态变量地址,并调用对象加工厂函数,动态创建子框架类对象,并返回对象地址。


利用框架类对象调用LoadFrame函数,创建主框架窗口.在处理框架窗口的WM_CREATE消息时,动态创建视图类对象并创建视图窗口。


在处理视图窗口的WM_CREATE消息时,将视图类对象和文档类对象建立绑定关系


目录
相关文章
|
JSON 前端开发 API
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
419 2
|
JSON 数据处理 API
Django后端架构开发:视图与模板的正确使用
Django后端架构开发:视图与模板的正确使用
491 1
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
332 0
MFC应用程序对话框架构
MFC应用程序对话框架构
254 0
|
JSON 前端开发 Java
SpringMVC的架构有什么优势?——视图与模型(二)
SpringMVC的架构有什么优势?——视图与模型(二)
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
1150 4
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
603 3