FrameWnd,View和Docment的手工创建

以下为MDI下,FrameWnd,View和Docment的手工创建的过程,首先,框架在InitInstance中把主框架创建出来了,并把需要的文档模板用成员变量保存了起来,用户点击主框架中的新建菜单:

 1.修改消息映射表中对ID_FILE_NEW的响应为本类的OnFileNew(默认是父类的OnFileNew)

2.建立OnFileNew消息函数,下面的操作都在OnFileNew中进行

3.在成员变量中选择一个需要的文档模板对象,调用其CreateDocMent方法

5.设置建立好的Docment的标题

6.调用文档模板的CreateNewFrame方法

7.此后框架自动做如下操作:CreateNewFrame调用ChildFrame的Create,发送WM_CREATE方法,触发响应函数OnCreate,OnCreate调用OnCreateClient,OnCreateClient调用CreateView,把view和创建出来。

8.用创建出来的Frame调用InitialUpdateFrame,于是整个FrameWnd,View和Docment显示了出来。

附:

1.SDI也可以加入多个文档模板(CSingleDocTemplate),只是一次只有一份处于打开状态而已,每新建一个,会关闭上一个打开的文档已经存在的。

CSingleDocTemplate只维护一份文档:CDocment *m_pOnlyDoc

CMutiDocTemplate中需要维护多份文档:CPtrList m_docList

2.ChildFrame是由一个子窗口(clientframe)和包围子窗口的边框组成的,clientframe才是view的父窗口,

OnCreateClient中调用CreateView把视图创建了出来,可以重载它,来分割多视图。

3.所有CWnd在create时都通过钩子把窗口过程变成了AfxWindowProc,所有MFC共享一个窗口过程,在

AfxWindowProc中统一进行消息路由,调用各个窗口的WndProc,WndProc

  调用OnMsgCmd,其中一系列case语句在Message Map中调用匹配的消息处理函数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值