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

单文档视图架构

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

cpp 复制代码
#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;

多文档视图架构

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

cpp 复制代码
#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;
相关推荐
Marye_爱吃樱桃几秒前
MATLAB R2024b的安装、简单设置——保姆级教程
开发语言·matlab
旺仔.291几秒前
Linux系统基础详解(二)
linux·开发语言·网络
阿贵---几秒前
分布式系统C++实现
开发语言·c++·算法
不染尘.2 分钟前
最短路径之Bellman-Ford算法
开发语言·数据结构·c++·算法·图论
格林威2 分钟前
工业相机图像采集:Grab Timeout 设置建议——拒绝“假死”与“丢帧”的黄金法则
开发语言·人工智能·数码相机·计算机视觉·c#·机器视觉·工业相机
Reisentyan2 分钟前
[Refactor]CPP Learn Data Day 1
c++·重构
xiaoye-duck4 分钟前
C++ STL set 系列深度解析:从底层原理、核心接口到实战场景
开发语言·c++·stl
小涛不学习5 分钟前
Java高频面试题(带答案版)
java·开发语言
m0_662577977 分钟前
C++中的RAII技术深入
开发语言·c++·算法
旖-旎7 分钟前
二分查找(点名)(8)
c++·算法·二分查找·力扣