【上位机——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;
相关推荐
励志要当大牛的小白菜24 分钟前
ART配对软件使用
开发语言·c++·qt·算法
PAK向日葵1 小时前
【算法导论】如何攻克一道Hard难度的LeetCode题?以「寻找两个正序数组的中位数」为例
c++·算法·面试
爱装代码的小瓶子3 小时前
数据结构之队列(C语言)
c语言·开发语言·数据结构
Maybe_ch4 小时前
.NET-键控服务依赖注入
开发语言·c#·.net
超浪的晨4 小时前
Java UDP 通信详解:从基础到实战,彻底掌握无连接网络编程
java·开发语言·后端·学习·个人开发
终焉暴龙王4 小时前
CTFHub web进阶 php Bypass disable_function通关攻略
开发语言·安全·web安全·php
Edingbrugh.南空5 小时前
Aerospike与Redis深度对比:从架构到性能的全方位解析
java·开发语言·spring
CodeCraft Studio6 小时前
借助Aspose.HTML控件,在 Python 中将 HTML 转换为 Markdown
开发语言·python·html·markdown·aspose·html转markdown·asposel.html
QQ_4376643146 小时前
C++11 右值引用 Lambda 表达式
java·开发语言·c++
aramae6 小时前
大话数据结构之<队列>
c语言·开发语言·数据结构·算法