【上位机——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;