当前位置: 首页 > news >正文

【上位机——MFC】单文档和多文档视图架构

单文档视图架构

特点:只能管理一个文档(只有一个文档类对象)

#include <afxwin.h>
#include "resource.h"//文档类
class CMyDoc :public CDocument {DECLARE_DYNCREATE(CMyDoc)	//支持动态创建机制
};
IMPLEMENT_DYNCREATE(CMyDoc,CDocument)	//支持动态创建机制//视图类
class CMyView : public CView {DECLARE_DYNCREATE(CMyView)	//支持动态创建机制public://重新CView类的OnDraw方法virtual void OnDraw(CDC* pDC);
};
IMPLEMENT_DYNCREATE(CMyView, CView)	//支持动态创建机制void CMyView::OnDraw(CDC* pDC) {pDC->TextOut(100,100,"视图窗口");
}class CMyFrameWnd :public CFrameWnd {DECLARE_DYNCREATE(CMyFrameWnd)	//支持动态创建机制
};
IMPLEMENT_DYNCREATE(CMyFrameWnd, CFrameWnd)	//支持动态创建机制class CMyWinApp :public CWinApp {
public:virtual BOOL InitInstance();
};BOOL CMyWinApp::InitInstance() {//NEW一个单文档模板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;
}CMyWinApp theApp;

多文档视图架构

特点:可以同时管理多个文档(可以有多个文档类对象)

#include <afxwin.h>
#include "resource.h"//文档类
class CMyDoc :public CDocument {DECLARE_DYNCREATE(CMyDoc)
};
IMPLEMENT_DYNCREATE(CMyDoc, CDocument)//视图类
class CMyView :public CView {DECLARE_DYNCREATE(CMyView)
public:virtual void OnDraw(CDC* pDC);
};
IMPLEMENT_DYNCREATE(CMyView, CView)void CMyView::OnDraw(CDC* pDC) {pDC->TextOut(100,100,"视图窗口");
}//子框架窗口类
class CMyChild :public CMDIChildWnd {DECLARE_DYNCREATE(CMyChild)
};
IMPLEMENT_DYNCREATE(CMyChild, CMDIChildWnd)//主框架窗口类 不支持动态创建
class CMyFrameWnd :public CMDIFrameWnd {};//应用程序类 不支持动态创建
class CMyWinApp :CWinApp {
public:virtual BOOL InitInstance();
};
BOOL CMyWinApp::InitInstance() {CMyFrameWnd* pFrame = new CMyFrameWnd;pFrame->LoadFrame(IDR_MENU1);m_pMainWnd = pFrame;pFrame->ShowWindow(SW_SHOW);pFrame->UpdateWindow();//创建子框架窗口CMultiDocTemplate* pTemplate = new CMultiDocTemplate(IDR_MENU2,RUNTIME_CLASS(CMyDoc), RUNTIME_CLASS(CMyChild), RUNTIME_CLASS(CMyView));AddDocTemplate(pTemplate);OnFileNew();OnFileNew();OnFileNew();return TRUE;
}CMyWinApp theApp;
http://www.dtcms.com/a/174453.html

相关文章:

  • TestStand API 简介
  • 猿人学web端爬虫攻防大赛赛题第7题——动态字体,随风漂移
  • 本地文件批量切片处理与大模型精准交互系统开发指南
  • C# 使用SunnyUI控件 (VS 2019)
  • UE5 渲染思路笔记(角色)
  • Java学习手册:分库分表策略
  • UE5 诺伊腾动捕使用笔记
  • 欧拉系统(openEuler)上部署OpenStack的完整指南 ——基于Yoga版本的全流程实践
  • 【LDM】视觉自回归建模:通过Next-Scale预测生成可扩展图像(NeurIPS2024最佳论文阅读笔记与吃瓜)
  • 打造智慧养老实训室,构建科技赋能养老新生态
  • TDengine 车联网案例
  • 51单片机同一个timer 作为定时器和波特率发生器么?
  • LeetCode 热题 100 79. 单词搜索
  • Spring Cloud Stream集成RocketMQ(kafka/rabbitMQ通用)
  • 如何选择 边缘计算服务器
  • 代码随想录图论part03
  • 总结一下最近的知识盲区(个人笔记)
  • 抖音热门视频评论数追踪爬虫获取
  • C++ 项目 -- 高并发内存池
  • 数据可视化与分析
  • Elasticsearch知识汇总之ElasticSearch与OpenSearch比较
  • 第二章:langchain文本向量化(embed)搭建与详细教程-本地服务方式(下)
  • OpenGl实战笔记(3)基于qt5.15.2+mingw64+opengl实现光照变化效果
  • PyCharm 加载不了 conda 虚拟环境,不存在的
  • ChatGPT对话导出工具-轻松提取聊天记录导出至本地[特殊字符]安装指南
  • YOLO 从入门到精通学习指南
  • ai大模型学习1
  • Java面试全栈解析:Spring Boot、Kafka与Redis实战揭秘
  • 干货分享|检索增强生成技术RAG:向量化与大模型的结合
  • 使用batch脚本调用另一个batch脚本遇到的问题