MFC单文档视图架构

其实所有的节日,都不是为了礼物和红包而生,而是提醒我们不要忘记爱与被爱,生活需要仪式感,而你需要的是在乎和关爱。。。

----  网易云热评

一、特点

只能管理一个文档

 

二、相关类

CWinApp / CFrameWnd / CView / CDocument - 文档类

CDocManager - 文档管理类   

CDocTemplate - 文档模板类

CSingleDocTemplate - 单文档模板类

 

三、实例

1、添加三大框架,动态创建

class CMyDoc :public CDocument {       DECLARE_DYNCREATE(CMyDoc)};IMPLEMENT_DYNCREATE(CMyDoc,CDocument)class CMyView :public CEditView {       DECLARE_DYNCREATE(CMyView)};IMPLEMENT_DYNCREATE(CMyView, CEditView)class CMyFrameWnd :public CFrameWnd{       DECLARE_DYNCREATE(CMyFrameWnd)};IMPLEMENT_DYNCREATE(CMyFrameWnd,CFrameWnd)

2、添加应用框架,手动创建

class CMyWinApp:public CWinApp {public:       virtual BOOL InitInstance();};CMyWinApp theApp;BOOL CMyWinApp::InitInstance() {       //单文档模板类对象       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;}

3、运行报错,需要添加字符串表

4、添加字符串表,右击资源,添加string table

5、运行结果:

6、关系图

theApp

    |->m_pDocManager //文档管理类对象地址

              |->m_templateList

                       |->CSingleDocTemplate* pTemplate

                               |->m_pOnlyDoc //文档类对象地址

                               |->m_pDocClass

                              //文档类的静态变量的地址RUNTIME_CLASS(CMyDoc)

                               |->m_pFrameClass

                             //框架类的静态变量的地址RUNTIME_CLASS(CMyFrameWnd)

                               |->m_pViewClass

                             //视图类的静态变量的地址RUNTIME_CLASS(CMyView)

 

 

7、OnFileNew函数的执行过程

通过theApp获取文档管理类对象地址(m_pDocManager)

 

通过文档管理类对象地址(m_pDocManager)获取一个链表成员(m_templateList)并从链表中获取单文档模板类对象(pTemplate)

 

利用单文档模板类对象(pTemplate)获取文档类的静态变量地址,并调用对象加工厂函数,动态创建文档类对象,并返回对象地址。

 

利用单文档模板类对象(pTemplate)获取框架类的静态变量地址,并调用对象加工厂函数,动态创建子框架类对象,并返回对象地址。

 

利用框架类对象调用LoadFrame函数,创建主框架窗口.在处理框架窗口的WM_CREATE消息时,动态创建视图类对象并创建视图窗口。

 

在处理视图窗口的WM_CREATE消息时,将视图类对象和文档类对象建立绑定关系

 

 

 

欢迎关注公众号:顺便编点程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

web安全工具库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值