【C++】【MFC】MFC多文档框架
1.【C++】关于引用类型学习记录2.【C++】【图像处理】直方图均衡算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)3.【C++】【图像处理】均值滤波 and 高斯滤波 and 中值滤波 (低通滤波器)and Sobel算子边缘提取算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)4.【C++】【图像处理】形态学处理(腐蚀、膨胀)算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)5.【C++】【图像处理】灰度直方图实现算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)6.【C++】【OpenCV】Visual Studio 2022 配置OpenCV7.【C++】【OpenCV-4.9.0】灰度图取反(Mat属性的使用)8.【C++】【OpenCV-4.9.0】视频写入(VideoWriter,借助samples中的代码示例来进行学习)9.【C++】【MFC】Windows程序运行入口 and DialogBox10.【C++】【YOLO】搭建环境运行YOLO模型,完成目标识别11.【C++】【MFC】模态和非模态对话框12.【C++】【MFC】运行时类信息机制和动态创建机制13.【C++】【MFC】CView和CDocument关联以及COMMAND消息走向
14.【C++】【MFC】MFC多文档框架
15.【C++】【MFC】绘图16.【C++】【MFC】MFC序列化17.【C++】【MFC】控件集合相较于单文档架构,多文档基本架构则是有起码两个框架窗口,与其相对应的也会有两个文档类进行数据管理。
参与架构的类:
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() -> 依次创建文档类对象,子框架类对象,子框架类窗口,视图类对象,视图类窗口,文档类对象和视图类对象关联
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)