单文档视图架构
特点:只能管理一个文档(只有一个文档类对象)
#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;