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消息时,将视图类对象和文档类对象建立绑定关系

目录
相关文章
|
2月前
|
存储 设计模式 前端开发
请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
【2月更文挑战第26天】【2月更文挑战第89篇】请解释 Web 应用程序的 MVC(模型-视图-控制器)架构。
|
3月前
MFC应用程序对话框架构
MFC应用程序对话框架构
16 0
|
3月前
|
JSON 前端开发 Java
SpringMVC的架构有什么优势?——视图与模型(二)
SpringMVC的架构有什么优势?——视图与模型(二)
|
10月前
|
存储 数据库 索引
数据库视频第五章操作架构、视图和索引
数据库视频第五章操作架构、视图和索引
|
10月前
|
SQL 存储 数据库
【SQL server 2008】视图、索引、架构
【SQL server 2008】视图、索引、架构
87 0
|
2天前
|
存储 运维 负载均衡
探索微服务架构下的服务治理
【4月更文挑战第30天】 在当今软件开发领域,微服务架构已经成为了解决复杂系统问题的重要技术手段。随着微服务的广泛应用,如何有效管理与治理这些分散的服务成为了开发和维护的关键。本文将探讨在微服务架构下,实现高效服务治理的策略与实践,重点分析服务发现、配置管理、负载均衡和故障处理等核心要素,旨在为读者提供一套系统的服务治理思路。
|
1天前
|
Kubernetes API 开发者
构建高效微服务架构:后端开发的新范式
【5月更文挑战第2天】 随着现代软件开发的演进,传统的单体应用已难以满足快速变化的业务需求和敏捷开发的挑战。本文探讨了如何通过构建高效的微服务架构来提升后端开发的灵活性、可维护性和扩展性。我们将深入分析微服务的核心组件,包括服务拆分、容器化、API网关和持续集成/持续部署(CI/CD)等关键技术,并讨论它们如何共同作用以支持复杂的业务场景和云原生应用的需求。
6 1
|
1天前
|
负载均衡 Java API
构建高效微服务架构:API网关与服务熔断策略
【5月更文挑战第2天】 在微服务架构中,确保系统的高可用性与灵活性是至关重要的。本文将深入探讨如何通过实施有效的API网关和设计合理的服务熔断机制来提升分布式系统的鲁棒性。我们将分析API网关的核心职责,包括请求路由、负载均衡、认证授权以及限流控制,并讨论如何利用熔断器模式防止故障传播,维护系统的整体稳定性。文章还将介绍一些实用的技术和工具,如Netflix Zuul、Spring Cloud Gateway以及Hystrix,以帮助开发者构建一个可靠且高效的微服务环境。
|
2天前
|
监控 安全 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第30天】随着现代软件开发的复杂性日益增加,传统的单体应用架构已难以满足快速迭代与灵活部署的需求。微服务架构作为一种新兴的设计理念,它通过将一个大型应用程序拆分成一系列小而专注的服务来提供解决方案。本文旨在探讨如何构建一个高效且可靠的微服务架构系统,涵盖从设计原则、技术选型到部署实践的全方位知识,为后端开发者提供一种全新的开发思路和实践指导。
|
2天前
|
Java 调度 开发者
构建高效微服务架构:后端开发的新趋势深入理解操作系统之进程调度策略
【4月更文挑战第30天】 随着企业数字化转型的不断深入,传统的单体应用逐渐不能满足快速迭代和灵活部署的需求。微服务架构以其高度模块化、独立部署和易于扩展的特性,成为现代后端开发的重要趋势。本文将探讨如何构建一个高效的微服务架构,包括关键的设计原则、技术选型以及可能面临的挑战。