首页 > 编程语言 >【C++】【MFC】MFC多文档框架

【C++】【MFC】MFC多文档框架

时间:2024-06-24 10:09:47浏览次数:20  
标签:MFC DYNCREATE CMyView C++ CLASS 文档 RUNTIME public

相较于单文档架构,多文档基本架构则是有起码两个框架窗口,与其相对应的也会有两个文档类进行数据管理。

参与架构的类:

  CMDIFrameWnd / CMDIChildWnd / CWinApp / CView / CDocument

需要用的类:

  CDocTemplate(文档模板类)

    |-> CMultiDocTemplate(多文档模板类)

  CDocManager(文档管理类)

 1 #include <afxwin.h>
 2 #include "resource.h"
 3 
 4 class CMyDocument : public CDocument {
 5     DECLARE_DYNCREATE(CMyDocument)
 6 };
 7 IMPLEMENT_DYNCREATE(CMyDocument, CDocument)
 8 
 9 class CMyView : public CView {
10     DECLARE_DYNCREATE(CMyView)
11 public:
12     virtual void OnDraw(CDC* pDC);
13 };
14 IMPLEMENT_DYNCREATE(CMyView, CView)
15 
16 void CMyView::OnDraw(CDC* pDC) {
17     pDC->TextOut(100, 100, "View Window.");
18 }
19 
20 class CMyChild : public CMDIChildWnd {
21     DECLARE_DYNCREATE(CMyChild)
22 };
23 IMPLEMENT_DYNCREATE(CMyChild, CMDIChildWnd)
24 
25 class CMyFrameWnd : public CMDIFrameWnd {
26 
27 };
28 
29 class CMyWinApp : public CWinApp {
30 public:
31     virtual BOOL InitInstance();
32 };
33 
34 BOOL CMyWinApp::InitInstance() {
35     // 主框架窗口创建
36     CMyFrameWnd* pFrame = new CMyFrameWnd;
37     pFrame->LoadFrame(IDR_MENU1);
38     m_pMainWnd = pFrame;
39     pFrame->ShowWindow(SW_SHOW);
40     pFrame->UpdateWindow();
41 
42     // 子框架、视图类、文档类定义、创建、关联
43     CMultiDocTemplate* pTemplate = new CMultiDocTemplate(IDR_MENU2,
44         RUNTIME_CLASS(CMyDocument),
45         RUNTIME_CLASS(CMyChild),
46         RUNTIME_CLASS(CMyView));
47     AddDocTemplate(pTemplate);
48 
49     OnFileNew();
50     OnFileNew();
51     OnFileNew();
52 
53     return true;
54 }
55 
56 CMyWinApp theApp;

Result:

 

执行过程:

theApp
  |-> m_pDocManger(文档管理类)
    |-> m_templateList(文档模板类对象地址)
      |-> CMultiDocTemplate* pTemplate

        | ->m_docList(保存多文档地址)

        | ->m_pDocClass(RUNTIME_CLASS(CMyDoc))

        | ->m_pFrameClass(RUNTIME_CLASS(CMyChild))

        | ->m - pViewClass(RUNTIME_CLASS(CMyView))

OnFileNew() -> 依次创建文档类对象,子框架类对象,子框架类窗口,视图类对象,视图类窗口,文档类对象和视图类对象关联

标签:MFC,DYNCREATE,CMyView,C++,CLASS,文档,RUNTIME,public
From: https://www.cnblogs.com/vangoghpeng/p/18264302

相关文章

  • UE4 C++ 随机生成迷宫地图
    参考参考原理就是利用一个房间的三个方向(排除进入口)出口(可以减少,即设置墙壁),从而获得下一次房间生成的位置,其中涉及到对于多个房间重叠,生成结束后如何对缺口进行修补等功能实现RoomBaseActor该Actor类是后续创建房间的基类,如果想要固定所有房间形状即只改变出口个数,那么在该类......
  • C/C++ const 和 volatile 关键字要点总结
    const 和 volatile 是C/C++的两个关键字,各有不同的用途和要点。constconst 关键字用于声明常量,一旦声明为常量,其值就不能被修改。const 可以用于各种数据类型,也包括指针、函数参数、函数返回值和类成员函数。声明常量:声明为 const 的常量,在初始化后不能被修改。co......
  • C++ 面向对象高级开发 5、操作符重载与临时对象
    C++里面操作符就是一种函数。 任何成员函数都有一个this->pointer谁调用这个函数,就指向谁。      tempobject(临时对象)typename(); 没有名称即是临时对象。一般人少用,但标准库用的很多。   质疑精神,即使是标准库也有可以提高的地方。 ......
  • Java处理PDF文档【上】( 全新 iText 8.0 基础入门 、元素)
    一:iText简介iText是一个开源的Java库,用于处理PDF文档的创建、修改和呈现。它提供了一系列功能强大的API,使开发人员能够在他们的应用程序中轻松地操作PDF文件。它是由一家名为iTextGroupNV的公司开发和维护的,总部位于比利时。该公司专注于PDF技术,并致力于提供高......
  • 【华为OD机试真题】224、欢乐的周末 | 机试真题+思路参考+代码分析(最新抽中CD卷)(C++、J
    文章目录一、题目......
  • C++系统相关操作4 - 获取CPU(指令集)架构类型
    1.关键词2.sysutil.h3.sysutil.cpp4.测试代码5.运行结果6.源码地址1.关键词关键词:C++系统调用CPU架构指令集跨平台实现原理:Unix-like系统:可以通过uname-m命令获取CPU架构类型。Windows系统:可以通过环境变量PROCESSOR_ARCHITECTURE获取CPU......
  • C++系统相关操作3 - 获取操作系统的平台类型
    1.关键词2.sysutil.h3.sysutil.cpp4.测试代码5.运行结果6.源码地址1.关键词C++系统调用操作系统平台类型跨平台2.sysutil.h#pragmaonce#include<cstdint>#include<string>namespacecutl{/***@briefOperatingsystemplatformtype.......
  • LeetCode 70. 爬楼梯 使用c++解答
    假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶......
  • 全新发布:AIDOCZH.com 推出 Langchain API参考中文文档,提升查阅API效率!
    全新发布:AIDOCZH.com推出LangchainAPI参考中文文档,提升查阅API效率!一、LangChainAPI中文文档1、从网站中进入http://www.aidoczh.com/langchain/v0.2/docs/introduction/2、直接网页进入http://www.aidoczh.com/langchain_api/html/langchain_api_reference.html......
  • 向量数据库Milvus快速入门——AIDOCZH.COM上线Milvus中文文档
    Milvus快速入门——AIDOCZH.COM上线Milvus中文文档文章目录Milvus快速入门——AIDOCZH.COM上线Milvus中文文档Milvus官方文档的中文翻译Milvus介绍什么是Milvus向量数据库?关键概念非结构化数据嵌入向量向量相似性搜索为什么选择Milvus?支持的索引和度量标准是什么?索......